Birden fazla komutla find -exec komutunu kullanmaya çalışıyorum ama başarılı olamıyorum. Aşağıdaki gibi komutların mümkün olup olmadığını bilen var mı?
find *.txt -exec echo "$(tail -1 '{}'),$(ls '{}')" \;
Temel olarak, geçerli dizindeki her txt dosyasının son satırını yazdırmaya ve satırın sonunda bir virgül ve ardından dosya adını yazdırmaya çalışıyorum.
findkomutu birden fazla
-exec` bölümünü kabul eder. Örneğin:
find . -name "*.txt" -exec echo {} \; -exec grep banana {} \;
Bu durumda, @Caleb tarafından belirtildiği gibi, ikinci komutun yalnızca birincisi başarılı bir şekilde dönerse çalışacağını unutmayın. Eğer her iki komutun da başarılı ya da başarısız olmasına bakılmaksızın çalışmasını istiyorsanız, bu yapıyı kullanabilirsiniz:
find . -name "*.txt" \( -exec echo {} \; -o -exec true \; \) -exec grep banana {} \;
Bunu find ile yapıp yapamayacağınızı bilmiyorum, ancak alternatif bir çözüm bir kabuk betiği oluşturmak ve bunu find ile çalıştırmak olabilir.
lastline.sh:
echo $(tail -1 $1),$1
Komut dosyasını çalıştırılabilir hale getirin
chmod +x lastline.sh
Bul'u kullanın:
find . -name "*.txt" -exec ./lastline.sh {} \;