标签: batch-rename

Bash重命名扩展递归

我知道有很多这样的事情,但要么他们不能递归地工作,要么他们是巨大的.

这就是我得到的:

find . -name "*.so" -exec mv {} `echo {} | sed s/.so/.dylib/` \;
Run Code Online (Sandbox Code Playgroud)

当我运行查找部分时,它会给我一个文件列表.当我运行sed部分时,它用.dylib替换任何.so.当我一起运行它们时它们不起作用.

我用echo替换了mv,看看发生了什么:

./AI/Interfaces/C/0.1/libAIInterface.so ./AI/Interfaces/C/0.1/libAIInterface.so
Run Code Online (Sandbox Code Playgroud)

什么都没有被取代!
怎么了?

bash batch-rename

12
推荐指数
1
解决办法
8270
查看次数

使用python批量重命名100K文件

我有一个包含超过100,000个文件的文件夹,所有文件都使用相同的存根编号,但没有前导零,并且数字并不总是连续的(通常它们是,但是有间隙)例如:

file-21.png, 
file-22.png,  
file-640.png, 
file-641.png, 
file-642.png, 
file-645.png, 
file-2130.png, 
file-2131.png, 
file-3012.png, 
Run Code Online (Sandbox Code Playgroud)

等等

我想批量处理它来创建填充的,连续的文件.例如:

file-000000.png, 
file-000001.png, 
file-000002.png, 
file-000003.png, 
Run Code Online (Sandbox Code Playgroud)

当我用for filename in os.listdir('.'):文件解析文件夹时,我不想按顺序出现.可以理解他们出现了

 file-1, 
 file-1x, 
 file-1xx, 
 file-1xxx,
Run Code Online (Sandbox Code Playgroud)

等等

 file-2, 
 file-2x, 
 file-2xx, 
Run Code Online (Sandbox Code Playgroud)

我怎么能按数值的顺序让它通过?我是一个完整的python noob,但是看着文档,我猜我可以使用map创建一个新的列表,只过滤掉数字部分,然后对该列表进行排序,然后迭代它?有超过100K的文件,这可能很重.欢迎任何提示!

python file-rename batch-rename

9
推荐指数
2
解决办法
5356
查看次数

Linux根据目录中的另一个文件重命名文件?

我有大约750个目录,每个目录包含两个文件:

long_somewhat_random_filename.jpg
thumb.jpg
Run Code Online (Sandbox Code Playgroud)

我想要做的就是使用find或类似的重命名的东西thumb.jpglong_somewhat_random_filename_thumb.jpg.此刻我的大脑有点模糊.

我可以用perl脚本来做,但如果在bash中有一个简单的方法,那就更容易了.

linux bash batch-rename

9
推荐指数
1
解决办法
1606
查看次数

dos命令将文件名和扩展名转换为变量

我需要将文件x.dtsx从位置a复制到位置b.

如果b中已存在x.dtsx,那么我需要将x.dtsx重命名为x_Standby.dtsx然后,将x.dtsx重命名为b后

我当前的代码如下所示:

if exists %1 rename %1 %(should be 1_standy.extension)
xcopy %1 %2
Run Code Online (Sandbox Code Playgroud)

dos batch-file batch-rename batch-processing

9
推荐指数
1
解决办法
3万
查看次数

使用添加数字批量重命名文件

我有一堆随机名称的.jpg文件.我想要一个bash脚本来重命名它们:

basename-0.jpg
basename-1.jpg
basename-2.jpg
.
.
.
.
basename-1000.jpg
Run Code Online (Sandbox Code Playgroud)

我写了这个:

n = 0;
for file in *.jpg ; do mv  "${file}" basename"${n}".jpg; n+=1;  done
Run Code Online (Sandbox Code Playgroud)

但是上面的bash的问题在于,在循环中,n被认为是字符串,所以n + 1只是在新移动的文件的末尾添加另一个'1'.感谢您的提示.

bash batch-rename

9
推荐指数
1
解决办法
8195
查看次数

将文件重命名为md5 sum + extension(BASH)

我需要一些bash脚本的帮助.脚本需要将目录中的所有文件重命名为其md5 sum +扩展名.

我在下面找到了bash脚本,但需要进行更改以便添加扩展名.

md5sum * | sed 's/^\(\w*\)\s*\(.*\)/\2 \1/' | while read LINE; do mv $LINE; done
Run Code Online (Sandbox Code Playgroud)

linux bash rename batch-rename

6
推荐指数
2
解决办法
9245
查看次数

亚马逊s3重命名和覆盖文件,建议和风险

我有一个包含两种文件名的存储桶:

  1. [Bucket]/[file]
  2. [Bucket]/[folder]/[file]

例如,我可以:

  1. MyBucket/bar
  2. MyBucket/foo/bar

我想将所有[Bucket]/[folder]/[file]文件重命名为[Bucket]/[file]文件(从而覆盖/丢弃[Bucket]/[file]文件).
因此,在前面的示例中,我想MyBucket/foo/bar成为MyBucket/bar(并覆盖原始的/ duscard MyBucket/bar).

我尝试了两种方法:

  1. 使用s3cmd的移动命令: s3cmd mv s3://MyBucket/foo/bar s3://MyBucket/bar
  2. 使用亚马逊的SDK for php: rename(s3://MyBucket/foo/bar, s3://MyBucket/bar)

这两种方法似乎都有效,但是 - 考虑到我必须在数千个文件上进行批处理,
我的问题是:

  1. 哪种方法更受青睐?
  2. 还有其他更好的方法吗?
  3. 我必须在移动/重命名之前删除旧文件吗?(没有它似乎工作正常,但我可能不知道涉及的风险)

谢谢.

amazon-s3 batch-rename

6
推荐指数
1
解决办法
6017
查看次数

用于将文件夹名称复制并添加到多个子目录中的文件的Shell脚本

我有几个文件夹,不同的图像共享文件名,文件夹结构如下:

/parent/folder001/img001.jpg
/parent/folder001/img002.jpg
/parent/folder002/img001.jpg
/parent/folder002/img002.jpg
/parent/folder003/img001.jpg
/parent/folder003/img002.jpg
...
Run Code Online (Sandbox Code Playgroud)

并希望将这些文件复制/重命名为新文件夹,如下所示:

/newfolder/folder001_img001.jpg
/newfolder/folder001_img002.jpg
/newfolder/folder002_img001.jpg
/newfolder/folder002_img002.jpg
/newfolder/folder003_img001.jpg
/newfolder/folder003_img002.jpg
...
Run Code Online (Sandbox Code Playgroud)

(如果newfolder不是父文件夹的子文件夹,那可能会更好,因为这可能最终导致非常奇怪的递归.)

包含图像的文件夹都不包含任何子文件夹.

理想情况下,我希望能够重用该脚本来"更新"新文件夹,因为我可能需要在以后添加更多包含文件夹的图像.

如何使用shell脚本完成此操作?

unix linux shell rename batch-rename

6
推荐指数
1
解决办法
4198
查看次数

命令提示符/批处理 - 使用顺序编号重命名多个文件

假设我有多个文件

filename.a.txt
filename.b.txt
filename.c.txt
Run Code Online (Sandbox Code Playgroud)

我想运行一个以所有 .txt 文件为目标的批处理文件,并将它们重命名为我在自定义 %filename% var 中设置的任何内容

filename.1.txt
filename.2.txt
filename.3.txt
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经写了这个:

set filename=FileTitle
for /r %%i in (*.txt) do call ren %%i %filename%.txt
Run Code Online (Sandbox Code Playgroud)

它可以工作,但问题是它只是选取第一个 .txt 文件并为其提供 FileTitle 文件名,仅此而已。我无法弄清楚如何批量重命名所有 .txt 文件,并为它们提供唯一的序列号作为输出的前缀/后缀/自定义变量%filename%.txt,例如%filename%-%uniquesuffix%.txt. 所以我需要设置某种变量,为每个文件提供一个唯一的数字,例如按字母顺序从 1 到 99(cmd 提示选择文件的默认顺序)。

我确实搜索了其他答案,但它们只显示了如何向重命名的文件添加全局/相同前缀。

windows batch-file batch-rename

6
推荐指数
1
解决办法
1万
查看次数

使用数学运算重命名文件

我试图使用bash命令重命名一些文件,但我不知道如何在regex表达式中添加算术表达式/数学运算.

输入:

a000.png
a001.png
...
Run Code Online (Sandbox Code Playgroud)

输出继电器:

a010.png
a011.png
...
Run Code Online (Sandbox Code Playgroud)

我想在名字中添加10.

我试过的一些事情:

rename -n -e 's/a(\d+).png/a$1 + 10.png/' *
rename -n -e 's/a(\d+).png/a{$1 + 10}.png/' *
rename -n -e 's/a(\d+).png/a$($1 + 10).png/' *
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法吗?

bash perl batch-rename

6
推荐指数
1
解决办法
451
查看次数