
多くのコマンドを試しました。どれもうまくいきませんでした。サブフォルダー内のファイルの先頭に文字列を再帰的に追加するには、rename / find などをどのように使用すればよいでしょうか?
例file.jpg --> image_file.jpg
find . -name '*.jpg' -exec rename -n "s/^/image_/" *.jpg {} +
for pic in '*.jpg' ; do rename -n "s/^/image_/ ${pic}"; done
find . -name '*.jpg' -exec rename -n "s/^/image_/ .jpg '{}' \;
find "/files/" -type f -exec rename 's/^/image_/' '{}' \;
find . -name '*.jpg' -type f -exec bash -c 'echo "$1" "${1/^/image_/}"' -- {} \;
なぜこう言うのかInvalid cross-device link
find . -name '*.jpg' -execdir rename 's:./:/image_:' {} +
答え1
見つかりました! このコマンドは、すべてのサブディレクトリ内の各ファイルの先頭に文字列を再帰的に追加します。なぜ機能するのかまだわかりませんが、機能します。実際の結果を得るには、「-n」を削除してください。
find . -name '*.jpg' -execdir rename -n 's:./:./image_:' {} +
結果の例:rename(./28652316400.jpg, ./image_28652316400.jpg)
s
代替品を意味します。:
私が理解した限りでは、これは「.」の最初の出現箇所に行き、「.」まで行ったら「image_」に置き換えて終了するという意味です。(ただし間違っているかもしれません)。読んでください。ここbash およびスクリプトにおけるコロンの意味について詳しく説明します。