Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 重命名多个文件,同时在unix中将它们移动到具有动态文件名的不同目录_Bash_Awk_Sed - Fatal编程技术网

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:路径名中的文件或目录不存在。移动文件时出错*