Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Linux批量重命名文件_Linux_Rename_Bulk - Fatal编程技术网

Linux批量重命名文件

Linux批量重命名文件,linux,rename,bulk,Linux,Rename,Bulk,我将在Linux中重命名文件夹中的图像文件和pdf文件 它应该是递归的,因为一些文件在子文件夹中 当前文件名模式类似于: an-yt-h-in-g-123word-123456-anything.jpg (.png .pdf) 我的目标模式是 123456-anything.jpg (.png .pdf) 简而言之,我想删除前面的所有内容-NumberString-,并保留后面的所有内容,包括NumberString 有人能帮忙吗?非常感谢如果您的所有文件都严格按照您所说的那样命名,您可以使

我将在Linux中重命名文件夹中的图像文件和pdf文件

它应该是递归的,因为一些文件在子文件夹中

当前文件名模式类似于:

an-yt-h-in-g-123word-123456-anything.jpg (.png .pdf)
我的目标模式是

123456-anything.jpg (.png .pdf)
简而言之,我想删除前面的所有内容-NumberString-,并保留后面的所有内容,包括NumberString


有人能帮忙吗?非常感谢

如果您的所有文件都严格按照您所说的那样命名,您可以使用该命令

echo $s | awk -F'-' '{printf "%s-%s", $5, $6}'
若要获取新名称,请假定原始文件名由s持有

重命名可以简单地用mvlike完成


其中s也是原始文件名。

此命令将检查最后一个数字字符串的位置,并将子字符串从该位置输出到末尾。您可以将ls命令更改为其他命令


ls|awk-F'-''{fori=NF;i>=0;i-{如果匹配$i,/^[0-9]+$/{print$i;对于j=i+1;jan-yt-h-in-g-123word-123456-anything.jpg

对于JPEG的平面目录:

rename 's/.*-[0-9]+-[A-Za-z]+\./\1-\2/.' *.jpg 
对于递归访问当前目录:

find . \(-name "*.jpg" -o -name "*.pdf" \) -exec rename 's/.*-[0-9]+-[A-Za-z]+\./\1-\2/.' {} ";"

你读过的标签信息了吗?我想你可能不知道它与Windows有关,否则…谢谢你的帮助。我键入了batch,它自动生成了batch file,这是一个错误。谢谢PJ。我没有解释清楚。当前的文件名模式可以是任意长度。它类似于x-x-x-x-x-x-x-xxxx-123456-xxxxx.jpg。最后两个字段是连字符的数量应该是awk-F'-'{printf%s-%s,$NF-1,$NF}对,@indiv的答案比我的好。
find . \(-name "*.jpg" -o -name "*.pdf" \) -exec rename 's/.*-[0-9]+-[A-Za-z]+\./\1-\2/.' {} ";"