我有一个大型文件目录树,并使用以下脚本列出并用特定文件替换搜索到的名称。问题是,我不知道如何正确编写createList()for循环来解释目录名中的空格。如果所有目录都没有空格,那么它可以正常工作。
输出是文件列表,然后是“cp”命令列表,但报告带有空格的目录作为单独的目录。
aindex=1
files=( null )
[ $# -eq 0 ] && { echo "Usage: $0 filename" ; exit 500; }
createList(){
f=$(find . -iname "search.file" -print)
for i in $f
do
files[$aindex]=$(echo "${i}")
aindex=$( expr $aindex + 1 )
done
}
writeList() {
for (( i=1; i<$aindex; i++ ))
do
echo "#$i : ${files[$i]}"
done
for (( i=1; i<$aindex; i++ ))
do
echo "/usr/bin/cp /cygdrive/c/testscript/TheCorrectFile.file ${files[$filenumber]}"
done
}
createList
writeList
答案 0 :(得分:2)
用以下四行替换整个脚本:
find . -iname "search.file" | while read file
do
/usr/bin/cp /cygdrive/c/testscript/TheCorrectFile.file "$file"
done
(但cp
中的/bin
不是吗?哦,在Cygwin中,两者都是。但是,使用/bin
更便携。)