1

私はいくつかのファイルを持っています:

/var/www/media/0001/0001_123456_12.jpg
/var/www/media/0002/0002_123456_12.jpg
/var/www/media/0003/0003_123456_12.jpg

名前を次のように変更します。

/var/www/media/0001/0001_test.jpg
/var/www/media/0002/0002_test.jpg
/var/www/media/0003/0003_test.jpg

私のアイデアは、最初のファイルを見つけて、_それまでファイルの残りの部分を削除して.から追加することtestでした。

何か案は?

4

3 に答える 3

1

mmvパッケージをインストールできれば、これらの操作は簡単になります。を使用mmvすると、次のことを実行できます。

cd /var/www/media
mmv '*/*_123456_*.jpg' '#1/#2_test.jpg'

mmv マンページは次のとおりです。 http://manpages.ubuntu.com/manpages/lucid/man1/mln.1.html

于 2012-08-07T17:37:28.287 に答える
1

これは、正規表現を使用できるようにするperlのソリューションです。

于 2012-08-07T17:22:09.883 に答える
1
find /var/www/media/ -name \*.jpg -exec sh -c '
  a=$(echo {} | sed s/_123456_/_/);
  [ "$a" != "{}" ] && mv "{}" "$a" '

ですべての jpg ファイルを検索し/var/www/media、各ファイルに対して次のコマンドを実行します。

a=$(echo {} | sed s/_123456_/_/)
[ "$a" != "{}" ] && mv "{}" "$a"

このコマンドの後、a変数は内部のファイルの名前を書き換えました:

a=$(echo {} | sed s/_123456_/_/)

a変数と実名 ( )を比較し、{}それらが等しくない場合、ファイルの名前を変更する必要があります。

于 2012-08-07T17:24:55.800 に答える