从末尾修剪文件名

nig*_*ler 3 bash rename

我有一个文件夹,其中包含需要重命名的以下 mp4 文件

for filename in /media/usama/CRUNCH/RO_Plant/RO_Videos/*; do
    File1=$filename
    echo $File1
done
/media/usama/CRUNCH/RO_Plant/RO_Videos/Desal RO 16' Desalination Plants-JdN_Yx_5HzI.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/How Desalination Works-_H8EDLFNDtI.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/how membrane filter works with water-M3mpJysa6zQ.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Hydranautics - Spiral Wound Reverse Osmosis Elements-YlMGZWmh_Mw.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 1 of 3-6xD9FhbAIvY.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 2 of 3-Dt23yzCXaVA.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 3 of 3-VXyK20P6HD4.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/MED Desalination Process-5nDcxhkq8Js.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis Membrane Replacement Procedure-zNXYkH3uj-I.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis or RO System-BeXHKpuHVZg.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis Pressure Vessel-BeXHKpuHVZg.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/RO Process Equipments by R S Engineering, Mumbai-ijJ6QyaQ-Bk.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/The BioSand Water Filter-SlqAitfBbdQ.mp4
Run Code Online (Sandbox Code Playgroud)

现在我想修剪从-到.mp4开始的随机单词,以便将此文件名转换 The BioSand Water Filter-SlqAitfBbdQ.mp4为The BioSand Water Filter.mp4

为此,我获得了部分成功,如下所示

for filename in /media/usama/CRUNCH/RO_Plant/RO_Videos/*; do
    File1=$filename
    Out=${File1:0:${#File1}-16}".mp4"
    echo $Out
done
/media/usama/CRUNCH/RO_Plant/RO_Videos/Desal RO 16' Desalination Plants.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/How Desalination Works.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/how membrane filter works with water.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Hydranautics - Spiral Wound Reverse Osmosis Elements.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 1 of 3.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 2 of 3.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 3 of 3.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/MED Desalination Process.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis Membrane Replacement Procedure.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis or RO System.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis Pressure Vessel.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/RO Process Equipments by R S Engineering, Mumbai.mp4
/media/usama/CRUNCH/RO_Plant/RO_Videos/The BioSand Water Filter.mp4
Run Code Online (Sandbox Code Playgroud)

现在当我添加最后一块时,它归结为一无所有?

for filename in /media/usama/CRUNCH/RO_Plant/RO_Videos/*; do
    File1=$filename
    Out=${File1:0:${#File1}-16}".mp4"
    echo $Out
    mv $filename $Out
done
/media/usama/CRUNCH/RO_Plant/RO_Videos/Desal RO 16' Desalination Plants.mp4
mv: target ‘Plants.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/How Desalination Works.mp4
mv: target ‘Works.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/how membrane filter works with water.mp4
mv: target ‘water.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/Hydranautics - Spiral Wound Reverse Osmosis Elements.mp4
mv: target ‘Elements.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 1 of 3.mp4
mv: target ‘3.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 2 of 3.mp4
mv: target ‘3.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/Industrial Reverse Osmosis Startup Part 3 of 3.mp4
mv: target ‘3.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/MED Desalination Process.mp4
mv: target ‘Process.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis Membrane Replacement Procedure.mp4
mv: target ‘Procedure.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis or RO System.mp4
mv: target ‘System.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/Reverse Osmosis Pressure Vessel.mp4
mv: target ‘Vessel.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/RO Process Equipments by R S Engineering, Mumbai.mp4
mv: target ‘Mumbai.mp4’ is not a directory
/media/usama/CRUNCH/RO_Plant/RO_Videos/The BioSand Water Filter.mp4
mv: target ‘Filter.mp4’ is not a directory
Run Code Online (Sandbox Code Playgroud)

ter*_*don 6

看起来文件名都是这种格式:

filename-RandString.mp4
Run Code Online (Sandbox Code Playgroud)

如果是这样,您可以简单地删除从最后-到的所有内容.mp4:

for f in /media/usama/CRUNCH/RO_Plant/RO_Videos/*-*mp4; do
    mv "$f"  "${f%-*mp4}.mp4"; 
done
Run Code Online (Sandbox Code Playgroud)

格式${string%substring}删除的最短匹配$substring从后面$string。


您也可以使用 (Perl) 执行此操作rename:

rename 's/-[^-]*?mp4$/.mp4/' /media/usama/CRUNCH/RO_Plant/RO_Videos/*-*mp4
Run Code Online (Sandbox Code Playgroud)