在特定搜索模式后删除文件名中的文本
Remove text in file name after particular search pattern
我有一个文件名如下:
file_name1.pdf.sometext.here
我有一个包含多个相同格式文件的目录,我想编辑所有文件,以便删除 .pdf 之后的部分...因此文件看起来像这样
file_name1.pdf
这应该让你开始:
#!/bin/bash
for FILE in "$@"; do
NEWFILE=$(echo $FILE | sed -re 's/(.*.pdf).*//')
if [ ! -z "$NEWFILE" -a ! -f "$NEWFILE" -a ! -d "$NEWFILE" ]; then
mv "$FILE" "$NEWFILE"
fi
done
但是如果你有/usr/bin/rename,使用它:
rename 's/(.*\.pdf).*//' *.here
$ ls *.pdf*
file_name1.pdf.sometext.here file_name2.pdf.blah file_name3.pdf.sometext
$ for fname in *.pdf*; do mv "$fname" "${fname//.pdf.*/.pdf}"; done
$ ls *.pdf*
file_name1.pdf file_name2.pdf file_name3.pdf
我有一个文件名如下:
file_name1.pdf.sometext.here
我有一个包含多个相同格式文件的目录,我想编辑所有文件,以便删除 .pdf 之后的部分...因此文件看起来像这样
file_name1.pdf
这应该让你开始:
#!/bin/bash
for FILE in "$@"; do
NEWFILE=$(echo $FILE | sed -re 's/(.*.pdf).*//')
if [ ! -z "$NEWFILE" -a ! -f "$NEWFILE" -a ! -d "$NEWFILE" ]; then
mv "$FILE" "$NEWFILE"
fi
done
但是如果你有/usr/bin/rename,使用它:
rename 's/(.*\.pdf).*//' *.here
$ ls *.pdf*
file_name1.pdf.sometext.here file_name2.pdf.blah file_name3.pdf.sometext
$ for fname in *.pdf*; do mv "$fname" "${fname//.pdf.*/.pdf}"; done
$ ls *.pdf*
file_name1.pdf file_name2.pdf file_name3.pdf