我正在尝试以递归方式从 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 个文件。我是 shell 脚本的新手。我无法弄清楚这个有什么问题。
编辑:
这是我真正想要的。
- 我想递归地遍历一个目录并找到所有的 png 图像
- 将其发送到 pngnq 进行 RGBA 压缩
- 它输出新文件
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
我想递归地做这个