0
我有几个文件需要重命名。我想重命名以删除所有文件的扩展名(文件没有扩展名)。我更喜欢Linux中的“find and exec”命令,但我愿意接受其他解决方案。由于使用find和exec命令重命名文件以删除Linux中多个文件的扩展
Have
file.txt
file1.txt
file2.txt
file3.
Want
file
file1
file2
file3
我有几个文件需要重命名。我想重命名以删除所有文件的扩展名(文件没有扩展名)。我更喜欢Linux中的“find and exec”命令,但我愿意接受其他解决方案。由于使用find和exec命令重命名文件以删除Linux中多个文件的扩展
Have
file.txt
file1.txt
file2.txt
file3.
Want
file
file1
file2
file3
您可以rename
命令:
rename 's/\.[a-z]*$//g' file*
如果你想找到的目录下的所有文件子目录,然后你可以使用find
命令:
find . -name 'file*' | xargs rename 's/\.[a-z]*$//g'
根据文件可能的名字,你可以在重命名命令中调整正则表达式。
一个bash的解决办法是:
for fname in *.txt; do
[[ ! -e ${fname} ]] && continue
new=${fname%.*}
mv "$fname" "$new"
done
线[[ ! -e ${fname} ]] && continue
防范场景时,有与.txt
为扩展名的文件。
是'file3.'意外还是你想能够处理只有'.'作为扩展名的文件呢? –
我想能够处理这样的文件 – user2008558
查看更新后的答案。 –