Linux: 如何在层次结构中查找具有特定扩展名的文件并在找到时执行命令?
Linux: how to look for files with a certain extension in hierarchy and execute command whenever one is found?
我有一个目录层次结构,其名称不遵循某种模式。例如
parent
bcgegec
- hfiwehfiuwe
- huiwwuifegeufg
- whegwgefyfeg
- hfeohfeiofe
- chidchuehugfe
dedewdewf
- tegtgetg
- gtgetgtg
等等。
在某些此类目录中,有一个扩展名为 "gr" 的文件。我需要找到每个这样的文件,cd 到它的目录并执行以 .gr 文件作为参数的 "gnuplot" 命令。我尝试了以下嵌套两个查找命令,但内部命令的 {} 无法按我的需要工作。外部查找应该遍历每个目录,内部查找应该查找 .gr 文件是否存在。
find $parentDir -type d -exec sh -c '(cd {} && find . -maxdepth 1 -name *.gr -exec /usr/bin/gnuplot {} \;)' \;
也许这就是您要找的:
find . -type f -name "*.gr" -execdir /usr/bin/gnuplot {} \;
通读 man find
以获取其他有用信息。
我有一个目录层次结构,其名称不遵循某种模式。例如
parent
bcgegec
- hfiwehfiuwe
- huiwwuifegeufg
- whegwgefyfeg
- hfeohfeiofe
- chidchuehugfe
- hfiwehfiuwe
dedewdewf
- tegtgetg
- gtgetgtg
等等。
在某些此类目录中,有一个扩展名为 "gr" 的文件。我需要找到每个这样的文件,cd 到它的目录并执行以 .gr 文件作为参数的 "gnuplot" 命令。我尝试了以下嵌套两个查找命令,但内部命令的 {} 无法按我的需要工作。外部查找应该遍历每个目录,内部查找应该查找 .gr 文件是否存在。
find $parentDir -type d -exec sh -c '(cd {} && find . -maxdepth 1 -name *.gr -exec /usr/bin/gnuplot {} \;)' \;
也许这就是您要找的:
find . -type f -name "*.gr" -execdir /usr/bin/gnuplot {} \;
通读 man find
以获取其他有用信息。