标签: batch-rename

如何用计数重命名文件?

我有一个这样的目录:

randomized_quad015.png
randomized_quad030.png
randomized_quad045.png
randomized_quad060.png
randomized_quad075.png
randomized_quad090.png
randomized_quad1005.png
randomized_quad1020.png
randomized_quad1035.png
randomized_quad1050.png
randomized_quad105.png
randomized_quad1065.png
randomized_quad1080.png
randomized_quad1095.png
randomized_quad1110.png
randomized_quad1125.png
randomized_quad1140.png
Run Code Online (Sandbox Code Playgroud)

我想重命名在数字前面添加 0 的第一个文件,例如:

randomized_quad0015.png
Run Code Online (Sandbox Code Playgroud)

但我不知道怎么做。一些帮助?

bash rename batch-rename

5
推荐指数
2
解决办法
4633
查看次数

帮助翻译多个文件名的程序/命令

我有数百个不同名称的文件 ,我想将它们翻译成不同的语言。

是否有应用程序/CLI 操作允许我将所有这些名称复制到列表/表中,然后在翻译它们后将它们粘贴回列表/表中,或者允许类似于“的过程”重命名”在 Thunar 中,但更复杂的动作更接近我所描述的?

(我在 Lubuntu 中,由于对 LXDE/pcmanfm 桌面和 LXPanel 的不必要干扰,我不想使用 Nautilus。如果 Nautilus 中有解决方案,请提供它,但如果可能,请尝试提供替代方案。)

command-line rename batch-rename

5
推荐指数
1
解决办法
3273
查看次数

从终端递归地将所有文件和文件夹重命名为 Title Case

我是一个新手,我到处搜索这个,我也尝试过将小写重命名命令与一些正则表达式结合使用以获得标题案例而不是小写,但我不是很成功。

此命令将给定文件夹中的所有内容(文件 + 文件夹)转换为小写:

while IFS= read -r -d '' file; do mv -b -- "$file" "${file,,}"; done < <(find . -depth -name '*[A-Z]*' -print0)
Run Code Online (Sandbox Code Playgroud)

这是我对标题案例的尝试,它有效,但它不是递归的:

find . -name "*.flac" -print0 | while read -d $'\0' file; do rename 's/(^|[\s\(\)\[\]_-])([a-z])/$1\u$2/g' *; done
Run Code Online (Sandbox Code Playgroud)

这些只是我的一些尝试,如果有更好、更短的解决方案,我会非常喜欢那些。

你能帮我一下吗?提前致谢!

编辑:我忘了说,我的文件是这样的:“09 - 回家之路 - Amy MacDonald.flac”;应该更名为“09 - 回家之路 - 艾米麦克唐纳.flac”。请注意在单词中间已经有标题大小写的单词和大写字母。

command-line batch-rename

5
推荐指数
1
解决办法
3422
查看次数

如何更改文件名中的表达式?

我有包含多个文件的文件夹。我想更改名称中的表达式。

例如:

find /path/ -type f -name '*0050ABC_01032013*'
Run Code Online (Sandbox Code Playgroud)

给我一个这样的输出:

/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/mesh/0050ABC_01032013_Rhemi.gii.minf
/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/Lcortex_0050ABC_01032013.nii
/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/Lgrey_white_0050ABC_01032013.nii.minf
/path/0050ABC_01032013/ct/CTpost_2013-3-1/registration/CT-0050ABC_01032013_CTpost_2013-3-1_TO_Scanner_Based.trm
Run Code Online (Sandbox Code Playgroud)

我想将 0050ABC_01032013 更改为 0044CBA_01011901。

我试过这个:

find /path/ -type f -name '*0050ABC_01032013*' -execdir rename s/\.\/(w+)0050ABC_01032013(w+)$/$10044CBA_01011901$2/' {} \;
Run Code Online (Sandbox Code Playgroud)

但它不起作用。我该怎么办?

command-line bash find rename batch-rename

5
推荐指数
1
解决办法
331
查看次数

重命名多个 .txt 文件,更改特定位置的某些字符

我在 Ubuntu 16.04 的同一文件夹中有数百个.txt文件的集合,它们以字符串和索引号命名,如下所示:

a01_s01_e01_skeleton.txt
a01_s01_e02_skeleton.txt
a01_s01_e03_skeleton.txt
a01_s02_e01_skeleton.txt
...
a20_s10_e02_skeleton.txt
...
Run Code Online (Sandbox Code Playgroud)

我必须从数字小于 10 的每个.txt 文件中删除0(零),所以最后我将有:

instead of : a01_s01_e01_skeleton.txt 

it will be: a1_s1_e1_skeleton.txt #notice that the 0s are gone. 
Run Code Online (Sandbox Code Playgroud)

编辑

数字的位置总是相同的,就像在示例中一样。文件具有顺序逻辑,因此重命名过程必须完全正确。

我怎么能用命令行做到这一点?

command-line bash files batch-rename

5
推荐指数
3
解决办法
1048
查看次数

如何重命名(取消隐藏)目录中的所有文件和子目录?

我想制作一个脚本来一次性“取消隐藏”某个目录中的所有文件和目录,例如./unhide test.

test/
??? sub1
?   ??? .hiddenfile1
??? sub2
    ??? .hiddendir
        ??? .hiddendirsub
        ??? .hiddenfile2
        ??? not.hidden
Run Code Online (Sandbox Code Playgroud)

期望的结果:

test/
??? sub1
?   ??? hiddenfile1
??? sub2
    ??? hiddendir
        ??? hiddendirsub
        ??? hiddenfile2
        ??? not.hidden
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我对此还是个新手,我一直在尝试使用 找到解决方案find,但一直停留在-exec, 和rename(或mv),因为我仍在努力理解这种组合是如何工作的。:(所以,如果这里有人可以提供解决方案和详细解释,我将不胜感激。谢谢。

command-line batch-rename

5
推荐指数
1
解决办法
1675
查看次数

交换部分文件名

问题

我有数千个文件夹,其名称的结构如下:
firstName_lastName_date
我想使用下划线_作为分隔符来交换前两个部分,以便最终得到:
lastName_firstName_date

警告

lastName前面可能有一个nobiliary 粒子_在输入文件夹中用一个额外的分隔。
例如:
firstName_de_lastName_date
firstName_von_lastName_date

想要的输出应该是:
de_lastName_firstName_date
von_lastName_firstName_date

信息

  • date 总是最后一个元素。
  • 名字是单个单词。
  • 姓氏是单个词或带助词的组合词 (2)。

工具

我想rename在 bash中使用,最好是使用shell Parameter expand来做到这一点。

参考

https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html

rename batch-rename

5
推荐指数
1
解决办法
292
查看次数

在文件名的特定位置添加零

我有一个由几个文件组成的目录。文件名如下;

0102920.05o
0203920.05o
0304920.05o
....
Run Code Online (Sandbox Code Playgroud)

我需要在前 4 个数字后为所有文件添加“0”;

01020920.05o
02030920.05o
03040920.05o
Run Code Online (Sandbox Code Playgroud)

有没有办法用 bash 或 perl 做到这一点?

command-line bash perl batch-rename

4
推荐指数
1
解决办法
227
查看次数

如何使用 find 和 mv 批量更改多个文件名

我的许多目录中有很多拼写错误的文件。

它们是拼写的Localisation.json,我想将它们更改为Localization.json.

我尝试了这个,但它不起作用:

find -type f -name Localis* | xargs mv Localization.json
Run Code Online (Sandbox Code Playgroud)

command-line batch-rename

4
推荐指数
1
解决办法
1718
查看次数

仅使用一行 xargs 将 mkv 文件批量转换为 mp4 文件

这个答案使用 for 循环将一批 mp4 转换为 mp3。

我想只用一行代码实现类似的目标。经过一番尝试和错误,我想出了以下代码。

ls | grep .mkv | xargs -I {} ffmpeg -i {} -codec copy {}.mp4
Run Code Online (Sandbox Code Playgroud)

但是,输出文件名现在是video.mkv.mp4.

我知道我可以简单地再写一行来更改扩展名

ls | grep .mkv.mp4 | sed -e "p;s/\.mkv.mp4$/\.mp4/" | xargs -n2 mv
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种单线解决方案。

command-line video ffmpeg batch-rename

4
推荐指数
1
解决办法
406
查看次数

标签 统计

batch-rename ×10

command-line ×8

bash ×4

rename ×4

ffmpeg ×1

files ×1

find ×1

perl ×1

video ×1