使用多個命令查找-exec

我試圖將find -exec與多個命令一塊兒使用而沒有成功。 有人知道如下命令是否可行嗎? shell

find *.txt -exec echo "$(tail -1 '{}'),$(ls '{}')" \;

基本上,我正在嘗試在當前目錄中打印每一個txt文件的最後一行,並在該行的末尾打印,逗號後跟文件名。 bash


#1樓

find . -type d -exec sh -c "echo -n {}; echo -n ' x '; echo {}" \;

#2樓

有一種更簡單的方法: 函數

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 ...)"

#3樓

應該使用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 ' ' '/'

#4樓

感謝卡米洛·馬丁(Camilo Martin),我可以回答一個相關的問題: cmd

我想作的是 file

find ... -exec zcat {} | wc -l \;

這沒有用。 然而, 方法

find ... | while read -r file; do echo "$file: `zcat $file | wc -l`"; done

確實有效,因此謝謝! 文件


#5樓

另外一種方式是這樣的:

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能夠根據須要長而複雜。

但願這能夠幫助。

相關文章
相關標籤/搜索