我想删除322个文件名称中的前8个字符

时间:2018-05-24 17:47:46

标签: bash shell ubuntu

我有322个文件,所有文件都以"533682 - "开头(这是我要从中删除的内容)我使用这个脚本但没有工作:

for file in 533682*
do 

    mv $file $(echo $file | sed -e 's/^........//')

done

3 个答案:

答案 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)

以下是使用findmv的解决方案:

find . -name "533682*" -execdir bash -c 'mv "$0" "${0:9}"' {} \;

如此递归:

533682 - somefile

变为:

somefile