Unix环境下复制目录中所有.txt文件并批量重命名为<filename>_2.txt的命令
批量复制并重命名TXT文件的Unix命令方案
没问题,这有几个实用的方法帮你完成批量复制并重命名.txt文件的需求,在Linux、macOS等Unix-like系统上都能正常工作:
方法一:Bash For循环(兼容性最强)
这是最稳妥的方式,几乎所有系统都支持,还能完美处理带空格或特殊字符的文件名:
for file in *.txt; do # 加上-n参数可避免覆盖已存在的目标文件,不需要的话可以去掉 cp -n "$file" "${file%.txt}_2.txt" done
简单解释:
*.txt:匹配当前目录下所有以.txt结尾的文件"$file":用引号包裹原文件名,防止空格、特殊符号导致命令执行出错${file%.txt}:Bash的参数扩展语法,自动去掉文件名末尾的.txt后缀- 最后拼接
_2.txt,就得到了abc_2.txt这类符合要求的新文件名
方法二:结合Find命令(适合遍历子目录的场景)
如果你的.txt文件分散在子目录中,或者需要更精准的文件筛选,可以用find命令:
# -maxdepth 1 限制只处理当前目录,去掉该参数会遍历所有子目录 find . -maxdepth 1 -type f -name "*.txt" -exec sh -c 'cp -n "$0" "${0%.txt}_2.txt"' {} \;
小技巧
执行命令前可以先把cp换成echo,预览一下将要执行的操作,确认文件名是否符合预期:
for file in *.txt; do echo "cp $file ${file%.txt}_2.txt" done
内容的提问来源于stack exchange,提问作者user11341160
相关产品推荐
相关产品推荐

