求助:Linux终端实现find+mv移动文件前的交互确认方法
批量移动文件前逐个确认的解决方案
你可以通过在find或xargs的处理逻辑中加入交互式询问来实现每个文件移动前的确认,以下是两种实用方法:
方法1:使用find的-exec结合bash交互式脚本
直接让find对每个匹配到的文件执行带询问的移动逻辑:
find . -name "*FILE*" -exec bash -c 'read -p "确定要移动文件 {} 到/FOLDER1/吗?(y/N) " choice; if [ "$choice" = "y" ] || [ "$choice" = "Y" ]; then mv {} /FOLDER1/; fi' \;
- 工作原理:
-exec会为每个找到的文件单独调用bash脚本,通过read命令弹出确认提示,只有当输入y或Y时才执行mv命令。
方法2:基于原xargs命令改造
在你的原有命令基础上,通过bash脚本包裹询问逻辑:
find . -name "*FILE*" -print0 | xargs -0 -I {} bash -c 'read -p "是否移动 {} 到/FOLDER1/? (y/N) " ans; [ "$ans" = "y" ] && mv {} /FOLDER1/'
- 工作原理:
xargs会逐个替换{}为找到的文件路径,通过bash -c执行交互式判断,用户输入y时才触发移动操作。
补充说明
mv -i仅在目标路径存在同名文件、可能发生覆盖时才会询问,而上述方法能实现无论是否存在覆盖风险,每个文件移动前都触发确认,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Edson Ordaz
相关产品推荐
相关产品推荐

