ファイル名の先頭に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