我必须做一个脚本,它将所有* .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 "\n\b")
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。