ファイル名の前の10桁の数字の削除

ファイル名の前の10桁の数字の削除

ファイル名の先頭に10桁の数字が追加された何千もの画像ファイルがあります。 10桁の各文字列の後には下線が続きます。それらは次のとおりです。

1318487644_IMG_2158.jpg

次の内容を中断することなく、10digの数字と下線を削除する必要があります。結果は次のとおりです。

IMG_2158.jpg

このコマンドを使用して、ファイル名で望ましくない他のコンテンツを検索または置き換えます。

ls -1 | while read file; do new_file=$(echo $file | sed s/foo/bar/g); mv "$file" "$new_file"; done

ファイル名の残りの部分を変更せずに先行10dig +アンダースコアの組み合わせを削除するには上記のコマンドを編集するにはどうすればよいですか?

答え1

何人かの人々はls出力を解析することが悪い習慣だと思う。したがって、次のようになります(posixシェルを想定)。

for file in /path/to/file/*
do
    part_to_remove=$(echo "$file" | grep -Eo '[[:digit:]]{10}_')
    if ! [ -z $part_to_remove ]; then
        new_file="${file#$part_to_remove}"
        mv "$file" "new_file"
    fi 
done

答え2

POSIX的に:

for f in ./*; do
  mv -- "$f" "${f#./[0-9]*_}"
done

関連情報