如何从文件名中删除某些字符串?

苏尼尔·沙湖|

我在以下目录中只有几个文件: /var/lib/jenkins/bin/

-rwxr-xr-x. 1 root root 4430846 Apr 27 09:45 01-DSP-04.12_03_crc.bin
-rwxr-xr-x. 1 root root 1659036 Apr 27 09:45 01-FL4-04.12_02-crc.bin
-rwxr-xr-x. 1 root root 1659036 Apr 27 09:45 01-FL8-04.12_02-crc.bin
-rwxr-xr-x. 1 root root 1659036 Apr 27 09:46 01-FPGA-04.12_02-crc.bin
-rwxr-xr-x. 1 root root  524328 Apr 27 09:46 01-MMI-04.11_05-crc.bin
-rwxr-xr-x. 1 root root   27692 Apr 27 09:46 01-PIC-04.11_06-crc.bin

另外,我有一个脚本,可以在上执行一些工作/var/lib/jenkins/scripts/my_script.sh

我想从此脚本的文件名中删除开头的“ 01-”。有什么好办法吗?

我尝试了https://stackoverflow.com/questions/28305134/remove-first-n-character-from-bunch-of-file-names-with-cut的解决方案,但对我不起作用。

我得到这样的输出:

命令

$ for file in /var/lib/jenkins/bin/*; do echo mv $file `echo $file | cut -c4-`; done

输出

mv /var/lib/jenkins/bin/01-DSP-04.12_03_crc.bin r/lib/jenkins/bin/01-DSP-04.12_03_crc.bin
mv /var/lib/jenkins/bin/test.sh r/lib/jenkins/bin/test.sh

如您所见,它会删除前3个字符,即目录名,而不是文件名。我想从文件名中删除21个字符后的3个字符。

还有更好的方法吗?

芒登

问题是您使用的是完整路径,因此包括目录。最简单的解决方法是先cd进入目标目录,然后运行for循环:

cd /var/lib/jenkins/bin
for file in *; do echo mv "$file" "$(echo "$file" | cut -c4-)"; done

或者,使用外壳自身的字符串操作功能:

cd /var/lib/jenkins/bin
for file in *; do echo mv "$file" "${file#????}"; done

或者,如果您有perl-rename(rename在基于Debian的系统上,perl-rename在其他系统上调用过),则可以执行以下操作:

rename -n 's|.*/...||' /var/lib/jenkins/bin/*

确定可以正常使用后,请删除,-n以对其进行实际重命名。


但是,正如Sundeep在评论中指出的那样,如果您只想删除01-则应将其专门删除:

rename -n 's|.*/01-||' /var/lib/jenkins/bin/*

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除文件名中没有给定字符串的某些扩展名文件?

从文件名中删除某些字符串模式,而不影响扩展名

从文件名/字符串中删除非数字

从文件名中删除字符串

文件名中的字符串-如何删除扩展名?

如何在特定字符后删除多个文件名中的字符串?

如何使用正则表达式从文件名中删除字符串“ [xyz]”?

如何在每个文件名中删除一些字符串

如何删除文件名中括号内的所有字符串?

如何批量检测文件名中的字符串?

从字符串中删除日期后,从文件名中提取字符串

如何匹配文件名中的字符串并根据字符串重命名文件?

在 Windows 中的特定字符串之后从文件名中删除字符的最佳方法

在Linux终端中查找和删除文件名中包含相同字符串的文件

从文件名中删除某些特殊字符

批量删除文件名中带有特殊字符的子字符串

从文件名字符串中删除文件扩展名

批处理文件:删除字符串路径中的文件名

删除文件名的字符串,并将其他字符串保留在BASH中

将sed插入一个衬里以从文件名中删除字符串

Bash Shell脚本来查找和删除文件名中的子字符串

JS:最优化的方法是从字符串路径中删除文件名?

使用Windows cmd从文件名中删除字符串

创建批处理文件,以文件名中的某些字符串将文件添加到数组

如何在短划线中测试文件名中的字符(或字符串)

如何删除文件名中包含特定字符串的文件夹和所有子文件夹中的文件?

如何检查bash中是否存在文件名中包含特定字符串的文件?

如何将文件重命名为文件名中的子字符串?

如何在commnad line bash shell的文件文本中插入“字符串+文件名”?