相关疑难解决方法(0)

在Bash中提取文件名和扩展名

我想分别获取文件名(没有扩展名)和扩展名.

我到目前为止找到的最佳解决方案是:

NAME=`echo "$FILE" | cut -d'.' -f1`
EXTENSION=`echo "$FILE" | cut -d'.' -f2`
Run Code Online (Sandbox Code Playgroud)

这是错误的,因为如果文件名包含多个.字符,它将不起作用.如果,让我们说,我有a.b.js,它会考虑a和b.js,而不是a.b和js.

它可以在Python中轻松完成

file, ext = os.path.splitext(path)
Run Code Online (Sandbox Code Playgroud)

但是如果可能的话,我宁愿不为此启动Python解释器.

有更好的想法吗?

string bash filenames

1969
推荐指数
26
解决办法
143万
查看次数

如何在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万
查看次数

通过用零填充来批量重命名顺序文件

我有一堆像这样命名的文件:

output_1.png
output_2.png
...
output_10.png
...
output_120.png
Run Code Online (Sandbox Code Playgroud)

重命名那些匹配约定的最简单方法是什么,例如最多四位小数,以便命名文件:

output_0001.png
output_0002.png
...
output_0010.png
output_0120.png
Run Code Online (Sandbox Code Playgroud)

这在Unix/Linux/BSD中应该很容易,尽管我也可以访问Windows.任何语言都可以,但我对一些非常简洁的单行(如果有的话)感兴趣.

rename batch-file batch-rename

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

重命名文件时替换并添加前导零

请耐心等待,这个帖子会有点长...

我有一堆文件,其中一些文件名称简洁干净(例如1E01.txt),还有一些文件有很多额外内容:

Sample2_Name_E01_-co_032.txt
Sample2_Name_E02_-co_035.txt
...
Sample12_Name_E01_-co_061.txt
Run Code Online (Sandbox Code Playgroud)

等等.这里重要的是"Sample"之后的数字和" Name " 之后的字母+数字- 其余的是一次性的.如果我摆脱了不重要的部分,文件名将减少到与"干净"文件名(2E01.txt,2E02.txt,...,12E01.txt)相同的模式.我已经设法用以下表达式重命名文件(我自己想出这个,不知道是否非常优雅,但工作正常):

rename -v 's/Sample([0-9]+)_Name_([A-Z][0-9]+).*/$1$2\.txt/' *.txt
Run Code Online (Sandbox Code Playgroud)

现在,第二部分是为一个数字添加文件名的前导零,例如1E01.txt变为01E01.txt.我已经成功了(在另一个StackExchange帖子上找到并修改了这个):

rename -v 'unless (/^[0-9]{2}.*\.txt/) {s/^([0-9]{1}.*\.txt)$/0$1/;s/0*([0-9]{2}\..*)/$1/}' *.txt
Run Code Online (Sandbox Code Playgroud)

所以我终于得到了我的问题:有没有办法在一个重命名命令中合并两个表达式?我知道我可以做一个bash脚本来自动化这个过程,但我想要的是找到一个通过重命名的解决方案.

谢谢

regex bash perl rename

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

标签 统计

bash ×3

rename ×3

batch-file ×1

batch-rename ×1

filenames ×1

perl ×1

regex ×1

string ×1