Bash-用特定文件替换目标文件,在目录名中使用空格
我有一个很大的文件目录树,我使用下面的脚本列出并用一个特定的文件替换搜索到的名称。问题是,我不知道如何正确地编写createList()for循环来解释目录名中的空白。如果所有目录都没有空格,它就可以正常工作 输出是一个文件列表,然后是一个“cp”命令列表,但将其中包含空格的目录报告为单个目录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
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
更便于携带)非常好。效果很好。我想得太多了。