我正在尝试创建一个简单的脚本,遍历目录树,搜索名为“plot.plt”的文件,更改为其路由并在该目录中执行gnuplot(因为否则会丢失错误)。
到目前为止我已经尝试过了:
find . -type f -name "*.plt" -printf "%h\n" | xargs -i cd "{}"
但告诉我该目录不存在。
提前谢谢。
答案 0 :(得分:0)
您需要显式执行bash
,因为xargs
不运行shell。您需要在该shell调用中同时执行cd
和gnuplot
,因为目录更改不会影响父进程。
find . -type f -name '*.plt' -printf '%h\n' | xargs -i bash -c 'cd "$0"; gnuplot' {}
答案 1 :(得分:0)
如果你可以使用一个小的附加脚本(也可以用作别名),你可以这样做
find . -iname "*.plt" -exec ./gnuplotcd {} \;
包含
的文件gnuplotcd#!/bin/bash
cd `dirname $1`
gnuplot `basename $1`
别忘了chmod +x gnuplotcd
。