我試圖從遞歸查找命令中檢索文件名。此命令打印所有的文件名與全路徑使用find遞歸獲取bash腳本的文件名
> 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個文件。我是shell腳本的新手。我沒有弄清楚這個問題有什麼不對。
編輯:
這是我實際上想。
- 我想遍歷目錄遞歸,發現所有的PNG圖像
- 發送到pngnq的RGBA壓縮
- 它輸出與
orgfilename-nq8.png
- 新的文件發送到pngcrush並重新命名,並生成一個新的文件(ORG文件將被覆蓋)
- 刪除新文件
我有一個SINGL工作的代碼Ë目錄
for f in *.png; do pngnq -f -n 256 "$f" && pngcrush "${f%.*}"-nq8.png "$f";rm "${f%.*}"-nq8.png; done
我想這樣做遞歸
如果你想知道爲什麼它WASN
或
搜索
-printf
不要做你想做的事情:你必須一直使用它作爲'for $ in'$(find -name'* .png')「; ...(帶引號),這是我的猜測,或者你已經改變了'IFS'? – 244an 2013-02-18 14:49:15