缩小文件名(删除最后 N 列)

缩小文件名(删除最后 N 列)

我想从这个文件名中删除最后 3 列

david@david-ThinkPad-E480:~/Downloads$ ll A*
-rw-rw-r-- 1 david david 16006720 сен  9 11:03 'A.Matrosov. E.Rodionov. S.Bratus. Rootkits and Bootkits. Reversing Modern Malware and Next Gen...pdf'
david@david-ThinkPad-E480:~/Downloads$ 

我试过

david@david-ThinkPad-E480:~/Downloads$ mv A.Matrosov.\ E.Rodionov.\ S.Bratus.\ Rootkits\ and\ Bootkits.\ Reversing\ Modern\ Malware\ and\ Next\ Gen...pdf {cut -d ' ' -f 1-6 <<< ls A.Matrosov.\ E.Rodionov.\ S.Bratus.\ Rootkits\ and\ Bootkits.\ Reversing\ Modern\ Malware\ and\ Next\ Gen...pdf}

答案1

类似于此,使用 shell 参数扩展(假设名称在$fn

ext=${fn##*.}        # get extension
noext=${fn%.*}       # shed extension
minus1=${noext%.*}   # shed last part
minus2=${minus1%.*}  # shed next to last part
minus3=${minus2%.*}  # etc...
final=${minus3}.${ext}

把这段代码写成难以阅读的一行代码留给读者练习吧:)

使用perl-rename(又名renameprename,取决于发行版):

rename 's/^(.*)(\.[^.]+){3}(\.[^.]+)$/$1$3/' <file>

(实际执行时删除-n或替换)。-v

相关内容