簡體   English   中英

在Linux bash shell中查找命令

[英]Find command in linux bash shell

find命令是:

find ./ \( -path dir_a -o -path dir_b \) -prune

我想轉換為:

./find.sh dir_a dir_b

所以我的代碼(不起作用):

function myfind() {
   num=1
   tmp=""
   for i in $@
   do
       tmp="$tmp -path './$i' "
       if [ $((num++)) -ne $# ]
       then
           tmp="${tmp} -o"
       fi
   done
   echo $tmp # this is ok!!
   find ./ \( $tmp \) -prune # is doesn't work, why???
}

在一般情況下,“ classic sh ”無法解決您要嘗試的操作,因為您需要腳本才能正確地使用名為*'"[ ]"' ,而普通的舊扁平字符串根本不允許其正確運行引用(很容易,甚至相當復雜)。 幸運的是,正如注釋中所建議的那樣,Bash數組使您可以使用所有必要的控制級別來執行此操作。 只要確保始終在所有可能包含文件名的地方使用引號即可。

#!/bin/bash
dir_args=()
oh=
for i; do
    dir_args+=($oh '-path' "$i")
    oh='-o'
done
find . \( "${dir_args[@]}" \) -prune

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM