我有一个像这样的文件列表:
10_I_am_here_001.jpg
20_I_am_here_003.jpg
30_I_am_here_008.jpg
40_I_am_here_004.jpg
50_I_am_here_009.jpg
60_I_am_here_002.jpg
70_I_am_here_005.jpg
80_I_am_here_006.jpg
如何重命名目录中的所有文件,以便^[0-9]+_
从文件名中删除?
谢谢
我有一个像这样的文件列表:
10_I_am_here_001.jpg
20_I_am_here_003.jpg
30_I_am_here_008.jpg
40_I_am_here_004.jpg
50_I_am_here_009.jpg
60_I_am_here_002.jpg
70_I_am_here_005.jpg
80_I_am_here_006.jpg
如何重命名目录中的所有文件,以便^[0-9]+_
从文件名中删除?
谢谢
这是另一个基于 .jpg 文件的 bash 想法,如上所示或其他> VonBell
#!/bin/bash
ls *.jpg |\
while read FileName
do
NewName="`echo $FileName | cut -f2- -d "_"`"
mv $FileName $NewName
done
使用纯 BASH:
s='10_I_am_here_001.jpg'
echo "${s#[0-9]*_}"
I_am_here_001.jpg
然后,您可以在该目录中编写一个简单的 for 循环,如下所示:
for s in *; do
f="${s#[0-9]*_}" && mv "$s" "$f"
done
使用rename
:
rename 's/^[0-9]+_//' *
使用 bash 扩展通配符
shopt -s extglob
for f in *
do
[[ $f == +([0-9])_*.jpg ]] && mv "$f" "${f#+([0-9])_}"
done