我有322个文件,所有文件都以"533682 - "
开头(这是我要从中删除的内容)我使用这个脚本但没有工作:
for file in 533682*
do
mv $file $(echo $file | sed -e 's/^........//')
done
答案 0 :(得分:4)
使用Perl的独立rename
命令:
rename 's/^.{8}//' 533682*
答案 1 :(得分:1)
由于文件名包含空格,因此需要引用变量和命令替换,以便将它们视为单个参数。
#!/bin/bash
for file in 533682*;
do
mv "$file" "$(echo "$file" | sed -e 's/^........//')"
done
您也可以使用shell的内置子字符串运算符代替sed
。
mv "$file" "${file:8}"
一般来说,养成始终引用变量的习惯。只有在你有充分理由的情况下才能让他们不加引号。
答案 2 :(得分:1)
以下是使用find
和mv
的解决方案:
find . -name "533682*" -execdir bash -c 'mv "$0" "${0:9}"' {} \;
如此递归:
533682 - somefile
变为:
somefile