Bash 删除mac os上多个文件的部分名称
我有一个满是.pNG文件的目录,文件名中间有一个随机数组,如Bash 删除mac os上多个文件的部分名称,bash,macos,file-rename,Bash,Macos,File Rename,我有一个满是.pNG文件的目录,文件名中间有一个随机数组,如 T1_021_É}ÉcÉjÉV_solid box.png T1_091_ÉRÉjÉtÉ@Å[_City.png T1_086_ÉnÉiÉ~ÉYÉL_holiday.png 我想这是在移除之后 T1_021_solid box.png T1_091_City.png T1_086_holiday.png 如果这组随机字符在前后都有uu,谢谢 find . -type f -iname "T1_0*" 2>
T1_021_É}ÉcÉjÉV_solid box.png
T1_091_ÉRÉjÉtÉ@Å[_City.png
T1_086_ÉnÉiÉ~ÉYÉL_holiday.png
我想这是在移除之后
T1_021_solid box.png
T1_091_City.png
T1_086_holiday.png
如果这组随机字符在前后都有uu,谢谢
find . -type f -iname "T1_0*" 2>/dev/null | while read file; do
mv "${file}" "$(echo ${file} | cut -d'_' -f1,2,4-)"
done
说明:
- 查找所有以T1开头的文件_
- 使用while循环逐行读取列表
- 使用uu作为分隔符并剪切第三列
- 使用mv重命名
T1_021_solid box.png
T1_086_holiday.png
T1_091_City.png
使用
for
收集文件列表和删除子字符串的bash参数扩展,可以在包含文件的目录中执行以下操作:
T1中i的;做
beg=“${i%\u*\ u*}”##从后面修剪到第二个''
end=“${i###*.}”##从上到下修剪‘’
mv“$i”“${beg}$end”##将mv文件更改为新名称。
完成
(注意:您不必使用变量beg
和end
您只需组合这两个参数扩展就可以形成新的文件名,例如mv“$i”“${i%\\\\\\\\\\\\\\\\\\\\\\\{i\\\\\\\\\\\\\\\\\\\\\\\\\\/code>,但beg
和end
让事情更易读。)
结果
新文件名:
$ls-al T1_*
T1_021_固体
T1_086_holiday.png
T1_091_City.png
这只是从bash开始的另一种方式
使用cut
您可以使用cut
删除第三个字段,使用“
作为分隔符,并带有:
T1中i的;做
mv“$i”$(cut-d'-f-2,4-工作起来像个魔咒。感谢您的精彩解释欢迎您,祝您的脚本编写好运!