mv:提示重命名或覆盖


find /home/csuser/testfiles . -type f -name "*.c" -exec mv '{}' /home/csuser/src/ ;

上面的命令将简单地覆盖具有相同名称的文件。对于目标中已经存在的每个文件名,如何使mv提示我覆盖现有文件或替换它?

mv命令(man mv(的手册页显示以下条目:

-i, --interactive
prompt before overwrite

因此,在重写之前使用mv -i ...提示。

这里有一个简单的shell脚本包装器,用于提示您输入每个现有文件。

find /home/csuser/testfiles . -type f -name "*.c" -exec sh -c '
for file; do
dest=$0/${file##*/}
if [ -e "$dest" ]; then
ls -ld "$dest" "$file"
read -p "Enter new name for the second, or just ENTER to overwrite the first: " newname
if [ "$newname" != "" ]; then
dest=$0/${newname##*/}
fi
fi
mv "$file" "$dest"
done' /home/csuser/src/ {} +

我们模糊但方便地将目标目录作为$0传递。

相关内容

  • 没有找到相关文章

最新更新