请告诉我们如何使用重命名重命名所有文件,保留前8个字符和扩展名,例如:
我有:
001 -superfile-blaha_bla.txt
我需要:
001 -supe.txt
答案 0 :(得分:3)
rename 's/^(.{8}).*/$1/' *
会将文件截断为8个字符或更少。如果截断导致两个或多个文件映射到相同的名称,rename
默认情况下会发出警告并拒绝覆盖名称冲突中涉及的所有文件。
如果您使用
rename --force 's/^(.{8}).*/$1/' *
然后rename
将覆盖文件。
答案 1 :(得分:0)
IFS=$'\n'
files=`ls -1 $1`
for x in $files
do
filename="$x"
if [ $filename = `basename $0` ] # do not include this script file
then
echo "skipping script file"
continue
fi
suffix=${filename: -4}
name=${filename:0:8}
echo "renaming $x to $name$suffix"
mv $1/"$x" $1/$name$suffix
done
用法:script directory_name
注意事项:
将覆盖重复项,短于8个字符的文件名将以一个部分双重后缀结束,即ab.dat最终将成为ab.dat.dat