我知道有很多这样的事情,但要么他们不能递归地工作,要么他们是巨大的.
这就是我得到的:
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)
什么都没有被取代!
怎么了?
我有一个包含超过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的文件,这可能很重.欢迎任何提示!
我有大约750个目录,每个目录包含两个文件:
long_somewhat_random_filename.jpg
thumb.jpg
Run Code Online (Sandbox Code Playgroud)
我想要做的就是使用find或类似的重命名的东西thumb.jpg来long_somewhat_random_filename_thumb.jpg.此刻我的大脑有点模糊.
我可以用perl脚本来做,但如果在bash中有一个简单的方法,那就更容易了.
我需要将文件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) 我有一堆随机名称的.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脚本的帮助.脚本需要将目录中的所有文件重命名为其md5 sum +扩展名.
我在下面找到了bash脚本,但需要进行更改以便添加扩展名.
md5sum * | sed 's/^\(\w*\)\s*\(.*\)/\2 \1/' | while read LINE; do mv $LINE; done
Run Code Online (Sandbox Code Playgroud) 我有一个包含两种文件名的存储桶:
[Bucket]/[file] [Bucket]/[folder]/[file] 例如,我可以:
MyBucket/bar MyBucket/foo/bar 我想将所有[Bucket]/[folder]/[file]文件重命名为[Bucket]/[file]文件(从而覆盖/丢弃[Bucket]/[file]文件).
因此,在前面的示例中,我想MyBucket/foo/bar成为MyBucket/bar(并覆盖原始的/ duscard MyBucket/bar).
我尝试了两种方法:
s3cmd mv s3://MyBucket/foo/bar s3://MyBucket/barrename(s3://MyBucket/foo/bar, s3://MyBucket/bar)这两种方法似乎都有效,但是 - 考虑到我必须在数千个文件上进行批处理,
我的问题是:
谢谢.
我有几个文件夹,不同的图像共享文件名,文件夹结构如下:
/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脚本完成此操作?
假设我有多个文件
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 提示选择文件的默认顺序)。
我确实搜索了其他答案,但它们只显示了如何向重命名的文件添加全局/相同前缀。
我试图使用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)
有一个简单的方法吗?
batch-rename ×10
bash ×5
linux ×3
batch-file ×2
rename ×2
amazon-s3 ×1
dos ×1
file-rename ×1
perl ×1
python ×1
shell ×1
unix ×1
windows ×1