修剪长文件名的名称[重命名]

时间:2018-07-04 11:26:54

标签: regex linux bash

我有很多文件需要重命名。我看到的所有教程仅列出了将某些内容附加到旧文件名的列表。例如,从abc.txtunix_abc.txtabc_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

那只是文件名之间的数字。

感谢您的帮助。

1 个答案:

答案 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 }},然后将重命名这些文件。