linux – bash – 排除“for file in $(find …)”中的目录
发布时间:2020-12-13 23:23:41 所属栏目:Linux 来源:网络整理
导读:我必须做一个脚本,它将所有* .txt文件从主目录复制到此脚本的第一个参数(${1})中指定的新创建的目录. 如果备份目录已存在,我想跳过它.我正在尝试排除查找中的-prune,但它对我不起作用.最后我在循环中做了if语句,这也行不通,我不知道为什么……谢谢你的帮助!!
我必须做一个脚本,它将所有* .txt文件从主目录复制到此脚本的第一个参数(${1})中指定的新创建的目录.
如果备份目录已存在,我想跳过它.我正在尝试排除查找中的-prune,但它对我不起作用.最后我在循环中做了if语句,这也行不通,我不知道为什么……谢谢你的帮助!! 这是我的代码: #!/bin/bash mkdir ${1} for file in $(find ~/ -name *.txt) do if [ ! -f ~/${1}/$file ] then cp -i -v $file -t ~/${1} fi done 解决方法
您在代码中有错误,您正在创建目录:
mkdir ${1} 但是复制和测试不同的路径(-f~ / ${1} / $file,-t~ / ${1}).创建变量以防止此类错误: #!/bin/bash dest=~/${1} [ -d "$dest" ] || mkdir "$dest" SAVEIFS=$IFS IFS=$(echo -en "nb") for file in $(find ~/ -name '*.txt' -print) do dfile="$dest/"$(basename "$file") if [ "$file" -ef "$dfile" ]; then echo same else cp -i -v "$file" -t "$dfile" fi done IFS=$SAVEIFS (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |