find コマンドからファイル名を再帰的に取得しようとしています。このコマンドは、すべてのファイル名をフルパスで出力します
> for f in $(find -name '*.png'); do echo "$f";done
> ./x.png
> ./bg.png
> ./s/bg.png
しかし、これらのコマンドを使用してファイルの名前を取得しようとすると、出力されます
for f in $(find -name '*.png'); do echo "${f##*/}";done
bg.png
と
for f in $(find -name '*.png'); do echo $(basename $f);done
bg.png
他の 2 ファイルは省略します。私はシェルスクリプトを初めて使用します。これの何が問題なのかわかりませんでした。
編集:
これは私が実際に望んでいたものです。
- ディレクトリを再帰的にループして、すべてのpng画像を見つけたい
- RGBA圧縮のためにpngnqに送信します
- 新しいファイルを出力します
orgfilename-nq8.png
- それをpngcrushに送信し、名前を変更して新しいファイルを生成します(orgファイルは上書きされます)
- 新しいファイルを削除
私は単一のディレクトリで動作するコードを持っています
for f in *.png; do pngnq -f -n 256 "$f" && pngcrush "${f%.*}"-nq8.png "$f";rm "${f%.*}"-nq8.png; done
これを再帰的に行いたい