Bash 重命名多个文件,同时在unix中将它们移动到具有动态文件名的不同目录
我想在将动态文件移动到其他目录时重命名这些文件。 文件名为:Bash 重命名多个文件,同时在unix中将它们移动到具有动态文件名的不同目录,bash,awk,sed,Bash,Awk,Sed,我想在将动态文件移动到其他目录时重命名这些文件。 文件名为: File_{Date}_1 File_{Date}_2 File_{Date}_3 File_{Date}_4 新文件名应为: File_{Date}_1.txt File_{Date}_2.txt File_{Date}_3.txt File_{Date}_4.txt 我尝试使用mv命令,但似乎无法移动多个文件。 文件的数量不是固定的,所以我不能逐行移动每个文件。 请帮助提供建议。您可以在每个文件上使用循环并使用mv命令,或者使
File_{Date}_1
File_{Date}_2
File_{Date}_3
File_{Date}_4
新文件名应为:
File_{Date}_1.txt
File_{Date}_2.txt
File_{Date}_3.txt
File_{Date}_4.txt
我尝试使用mv命令,但似乎无法移动多个文件。
文件的数量不是固定的,所以我不能逐行移动每个文件。
请帮助提供建议。您可以在每个文件上使用循环并使用
mv
命令,或者使用重命名
命令:
rename 's/$/.txt/' File_*
(根据文件的命名方式更改glob表达式)。您可能只需要使用“查找”命令帮助
-exec
find/path/to/files/-type f-exec mv{}/new/destination/+
-exec
将用文件名替换{}
。诀窍是在最后用+
而不是\,终止-exec
命令代码>。这告诉find应该等待执行命令,直到它将{}
扩展到内核对参数的限制
基本上它会做mvf1 f2 f3 f4 f5。。。fN/新建/目的地/
显然,这并没有重命名文件。所以为了结束比赛,我会跑
cd/new/destination/;find./-type f-exec mv{}{}.txt“\代码>
如果在运行命令之前,您可以通过cd
”进入保存文件的目录,然后通过一个find命令就可以离开了
cd/path/to/files;find./-type f-printf“%P\n”-exec{}c/{}.txt\代码>
不幸的是,您不能将两个{}
与以find结尾的+
一起使用,但是单个命令应该运行得更快。希望这能为您提供一些选择。您可能应该在浏览一些后缩小问题的范围。我在使用重命名命令bash:rename:command not found时遇到此错误,这意味着您的系统上没有安装此命令。您也可以使用简单的for循环和mv;do mv“${file}”“{file}.txt”| |{echo”移动$file时出错;退出1;}完成
上述命令正在从四个文件中创建一个文件,因为{file}.txt&mv:0653-401无法将file*重命名为file*.txt:路径名中的文件或目录不存在。移动文件时出错*