
特定の文字列を含む私のディレクトリに表示される/tmp
すべてのファイルのファイルを作成しようとしています。
問題は通話basename {}
できないようです。これでもなく、そうでもありませんecho basename {}
。
grep -R 'mystring' . | cut -d: -f 1 | uniq | xargs -n 1 -I {} touch /tmp/`basename {}`
xargsパラメータでbasename関数を実行する方法を知っている人はいますか?
答え1
この試み:
grep -R 'mystring' . | cut -d: -f 1 | uniq| xargs -n 1 -I {} -t -i ksh -c "touch /tmp/$(basename {})"
答え2
問題は、逆引用符が早すぎるということです(つまり、xargsに送信された各引数に対して一度も拡張されません)。より良い方法があるかもしれませんが、明示的なbashループを削除できるはずです。
grep -R 'mystring' . | cut -d: -f 1 | uniq | while read f; do touch "/tmp/`basename $f`"; done