相关疑难解决方法(0)

Linux shell脚本将前导零添加到文件名

我有一个大约1,700个文件的文件夹.它们都被命名为1.txt1497.txt等.我想重命名所有文件,以便所有文件名都是四位数.

即,23.txt成为0023.txt.

什么是shell脚本才能执行此操作?或者一个相关的问题:我如何使用grep只匹配包含的行\d.txt(即一个数字,然后一个句点,然后是字母txt)?

这是我到目前为止所拥有的:

for a in [command i need help with]
do
  mv $a 000$a
done
Run Code Online (Sandbox Code Playgroud)

基本上,运行三次,使用命令找到一位数,两位数和三位数文件名(初始零的数量已更改).

linux bash shell grep

55
推荐指数
5
解决办法
8万
查看次数

如何在Bash文件名中填充数字?

使用Bash重命名表单中文件的最佳方法是什么:

(foo1, foo2, ..., foo1300, ..., fooN)
Run Code Online (Sandbox Code Playgroud)

使用零填充文件名:

(foo00001, foo00002, ..., foo01300, ..., fooN)
Run Code Online (Sandbox Code Playgroud)

bash rename

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

在bash脚本中printf的奇怪问题:"09"和"08"是无效数字,"07"和"06"都没问题

这是我的bash脚本 - 我只想用零填充一组数字:

printf "%04d" "09"
printf "%04d" "08"
printf "%04d" "07"
printf "%04d" "06"
Run Code Online (Sandbox Code Playgroud)

输出:

./rename.sh: line 3: printf: 09: invalid number 
0000
./rename.sh: line 4: printf: 08: invalid number 
0000 
0007
0006
Run Code Online (Sandbox Code Playgroud)

什么...?

只有09和08导致问题:我序列中的每个其他数字似乎都没问题.

bash shell printf

27
推荐指数
4
解决办法
2万
查看次数

零填充重命名,例如图像(2).jpg - >图像(002).jpg

我需要重命名所有图像,如标题在所有子文件夹中解释的那样.我正在考虑用正则表达式提取括号内的数字然后重命名它.搜索周围我看到有类似的工具rename,mmv但我无法让它们重命名jpgs.

我会感谢任何解决我的问题的建议.

BTW:适用于Windows,我有cygwin bash和perl.

编辑:
在尝试所有答案后的结论.

  1. Cygwin rename并不好,我可以上班不接受正则表达式,但绝对是个不错的选择,例如运行Linux VM并安装Win SharedFolder.
  2. 你可以建立一个更好rename的Cygwin的与工具这个shell脚本使用sed.
  3. Windows等效的pwd简单cd.
  4. Hugmeir使用Perl 5.13+发布了一个很有前途的解决方案,这些解决方案是开发版,但是当你可能正在阅读它时,可能会保持稳定.
  5. pad_left子可能不是printf语法的更好替代方法,但它可以工作.

bash perl

2
推荐指数
1
解决办法
1169
查看次数

使用增量索引重命名目录中的文件

输入:我想在按日期排序的目录中的文件名中增加数字。例如,将“ 01 _”,“ 02 _”,“ 03 _” ...添加到下面的这些文件中。

test1.txt (oldest text file)
test2.txt
test3.txt
test4.txt (newest text file)
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是代码。我可以获取文件名,但是文件名中的每个字符似乎都是列表中自己的项。

import os
for file in os.listdir("/Users/Admin/Documents/Test"):
if file.endswith(".txt"):
      print(file)
Run Code Online (Sandbox Code Playgroud)

预期的结果是:

   01_test1.txt
   02_test2.txt
   03_test3.txt
   04_test4.txt
Run Code Online (Sandbox Code Playgroud)

test1是最旧的,而test 4是最新的。

如何在每个文件名中添加01_,02_,03_,04_?

我已经尝试过这样的事情。但是它会在文件名中的每个单个字符上添加一个“ 01_”。

new_test_names = ['01_'.format(i) for i in file]
print (new_test_names)
Run Code Online (Sandbox Code Playgroud)

python filenames prepend

2
推荐指数
1
解决办法
1141
查看次数

标签 统计

bash ×4

shell ×2

filenames ×1

grep ×1

linux ×1

perl ×1

prepend ×1

printf ×1

python ×1

rename ×1