0

これは bash スクリプトで行うのが最も簡単だと思いますが、私はあまり経験がありません。

名前が「写真」で始まるすべてのファイルを検索し、名前の先頭から「写真」を削除してから、名前の先頭に「色」を追加します。また、特定のディレクトリでこれを再帰的に実行したいと考えています。

たとえば、スクリプトを実行するフォルダのサブディレクトリの 1 つに「photo_extra_text.png」というファイルがあるとします。スクリプトが実行された後、ファイルの名前は「color_extra_text.png」になります。

これどうやってするの?

助けてくれてありがとう!

4

2 に答える 2

1

パス名にスペースが含まれていないか、ディレクトリ名が で始まるものがない場合の簡単な方法photo:

for i in `find . -name 'photo*' -type f` ; do mv ${i} ${i/\/photo//color} ; done

繰り返しますが、これは簡単で汚い方法です - コメントの免責事項に注意してください。より堅牢な(しかしより冗長な)方法については、他の回答を参照してください。

于 2013-11-09T17:53:35.447 に答える
0

ファイル名に含まれるスペースやおかしな記号、およびphotoサブフォルダーに表示されない単語については何も想定していません。

find /path/to/photo_folder -name 'photo*.png' -exec bash -c 'echo mv "$1" "${1%/*}/color${1##*/photo}"' _ {} \;

もちろん、echoコマンドに満足している場合は削除してください。


別の (より単純な) 可能性:

find /path/to/photo_folder -name 'photo*.png' -execdir bash -c 'echo mv "$1" "color${1#*/photo}"' _ {} \;

それは私が最初に与えたコマンドであり、Tophep はそれが機能しないことを指摘しました。

多分それはos xのfindコマンドによるものです。実際には GNU でうまく動作しますfind

于 2013-11-09T18:02:41.833 に答える