【发布时间】:2010-12-11 21:07:40
【问题描述】:
我想编写一个 bash 脚本,它(递归地)处理特定类型的所有文件。
我知道我可以通过使用 find 得到匹配的文件列表:
找到 . -name "*.ext"
我想在脚本中使用它:
- 递归获取具有给定扩展名的文件列表
- 获取完整的文件路径名
- 将完整路径名传递给另一个脚本
- 检查脚本的返回码。如果非零,则记录无法处理的文件的名称。
我的第一次尝试看起来(伪代码)如下:
ROOT_DIR = ~/work/projects
cd $ROOT_DIR
for f in `find . -name "*.ext"`
do
#need to lop off leading './' from filename, but I havent worked out how to use
#cut yet
newname = `echo $f | cut -c 3
filename = "$ROOT_DIR/$newname"
retcode = ./some_other_script $filename
if $retcode ne 0
logError("Failed to process file: $filename")
done
这是我第一次尝试编写 bash 脚本,所以上面的 sn -p 不太可能运行。但希望我尝试做的逻辑足够清晰,有人可以展示如何连接这些点并将上面的伪代码转换为工作脚本。
我在 Ubuntu 上运行
【问题讨论】:
-
如果你使用'find $ROOT_DIR -name "*.exe"',你就不需要摆弄前导'./'。