我試圖將find -exec與多個命令一塊兒使用而沒有成功。 有人知道如下命令是否可行嗎? shell
find *.txt -exec echo "$(tail -1 '{}'),$(ls '{}')" \;
基本上,我正在嘗試在當前目錄中打印每一個txt文件的最後一行,並在該行的末尾打印,逗號後跟文件名。 bash
find . -type d -exec sh -c "echo -n {}; echo -n ' x '; echo {}" \;
有一種更簡單的方法: 函數
find ... | while read -r file; do echo "look at my $file, my $file is amazing"; done
或者: spa
while read -r file; do echo "look at my $file, my $file is amazing"; done <<< "$(find ...)"
應該使用xargs :) code
find *.txt -type f -exec tail -1 {} \; | xargs -ICONSTANT echo $(pwd),CONSTANT
另外一個(在osx上工做) ip
find *.txt -type f -exec echo ,$(PWD) {} + -exec tail -1 {} + | tr ' ' '/'
感謝卡米洛·馬丁(Camilo Martin),我可以回答一個相關的問題: cmd
我想作的是 file
find ... -exec zcat {} | wc -l \;
這沒有用。 然而, 方法
find ... | while read -r file; do echo "$file: `zcat $file | wc -l`"; done
確實有效,因此謝謝! 文件
另外一種方式是這樣的:
multiple_cmd() { tail -n1 $1; ls $1 }; export -f multiple_cmd; find *.txt -exec bash -c 'multiple_cmd "$0"' {} \;
在一排
multiple_cmd() { tail -1 $1; ls $1 }; export -f multiple_cmd; find *.txt -exec bash -c 'multiple_cmd "$0"' {} \;
multiple_cmd()
」-是一個函數 export -f multiple_cmd
」-將導出它,以便任何其餘子shell均可以看到它 find *.txt -exec bash -c 'multiple_cmd "$0"' {} \\;
「-查找將在您的示例中執行該功能 這樣,multiple_cmd能夠根據須要長而複雜。
但願這能夠幫助。