Bash-用特定文件替换目标文件,在目录名中使用空格

Bash-用特定文件替换目标文件,在目录名中使用空格,bash,replace,directory,whitespace,Bash,Replace,Directory,Whitespace,我有一个很大的文件目录树,我使用下面的脚本列出并用一个特定的文件替换搜索到的名称。问题是,我不知道如何正确地编写createList()for循环来解释目录名中的空白。如果所有目录都没有空格,它就可以正常工作 输出是一个文件列表,然后是一个“cp”命令列表,但将其中包含空格的目录报告为单个目录 aindex=1 files=( null ) [ $# -eq 0 ] && { echo "Usage: $0 filename" ; exit 500; } createList

我有一个很大的文件目录树,我使用下面的脚本列出并用一个特定的文件替换搜索到的名称。问题是,我不知道如何正确地编写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
aindex=1
文件=(空)
[$#-eq 0]&&{echo“用法:$0文件名”;退出500;}
createList(){
f=$(查找-iname“search.file”-打印)
因为我是f美元
做
文件[$aindex]=$(回显“${i}”)
aindex=$(expr$aindex+1)
完成
}
写作者(){

对于((i=1;i用以下四行替换整个脚本:

find . -iname "search.file" | while read file
do 
    /usr/bin/cp /cygdrive/c/testscript/TheCorrectFile.file "$file"
done

(但是
cp
/bin
中不是吗?哦,在Cygwin上,两者都有。不过,使用
/bin
更便于携带)

非常好。效果很好。我想得太多了。