我想写一个bash脚本,用于(递归地)处理所有特定类型的文件。
我知道可以通过以下方式使用find获取匹配的文件列表:
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脚本,因此上面的代码片段可能无法运行。但希望我的逻辑足够清晰,有人能够指导如何连接各个部分并将上述伪代码转换为可工作的脚本。
我正在运行Ubuntu操作系统。