我有很多文件需要重命名。我看到的所有教程仅列出了将某些内容附加到旧文件名的列表。例如,从abc.txt
到unix_abc.txt
或abc_unix.txt
。我知道我必须使用正则表达式,但是我无法编写确切的表达式。
for FILENAME in *; do mv $FILENAME {SOME_EXPRESSION_HERE}; done
该表达式如何写?我想到了这个表情
Unix_Unix_[0-9][0-9][0-9]_without_dash_file.pdf
我的文件名为
Unix_Unix_1_without_dash_file.pdf
Unix_Unix_10_without_dash_file.pdf
Unix_Unix_100_without_dash_file.pdf
我需要像
1.pdf
10.pdf
100.pdf
那只是文件名之间的数字。
感谢您的帮助。
答案 0 :(得分:2)
能否请您尝试执行以下命令,并告诉我这是否对您有帮助。截至目前,我正在打印mv
命令,如果您觉得正确,可以删除echo
。
for file in Unix*.pdf
do
temp="${file/_without*/}"
echo "mv $file ${temp##*_}.pdf"
done
输出如下。
mv Unix_Unix_100_without_dash_file.pdf 100.pdf
mv Unix_Unix_10_without_dash_file.pdf 10.pdf
mv Unix_Unix_1_without_dash_file.pdf 1.pdf
注意: 如上所述,一旦您对上述命令感到满意,请从echo
行中删除echo "mv $file ${temp##*_}.pdf"
,然后将其更改为{{1 }},然后将重命名这些文件。