Làm thế nào để tôi thực thi một lệnh trong đó một tập tin được tìm thấy?
Hãy xem xét tôi có một thư mục có tên testdir
như sau:
$ ls -R testdir/
testdir/:
dir1 dir2 dir3 dir4 dir5
testdir/dir1:
doc1.pdf
testdir/dir2:
file1.txt
testdir/dir3:
doc2.pdf
testdir/dir4:
file2.txt
testdir/dir5:
doc5.pdf
Bây giờ tôi muốn thực hiện một hành động (thực thi một lệnh) trong đó find
tìm thấy một loại tệp / tệp nhất định. Ví dụ để tôi tìm *.pdf
:
$ find . -name '*.pdf'
./testdir/dir3/doc2.pdf
./testdir/dir5/doc5.pdf
./testdir/dir1/doc1.pdf
Bây giờ giả sử tôi muốn thực thi một lệnh (ví dụ nói touch file
) trong đó lệnh trên tìm thấy tập tin. Nói cách khác, tôi muốn tạo một tệp có tên file
trong mỗi thư mục nơi .pdf
tìm thấy ít nhất một tệp để tôi nhận được:
$ ls -R testdir/
testdir/:
dir1 dir2 dir3 dir4 dir5
testdir/dir1:
doc1.pdf file
testdir/dir2:
file1.txt
testdir/dir3:
doc2.pdf file
testdir/dir4:
file2.txt
testdir/dir5:
doc5.pdf file
Làm thế nào để tôi hoàn thành một công việc như vậy?
Có thể cho mỗi lần tìm thấy tệp, cd
đến nơi tệp tồn tại và thực hiện lệnh đệ quy.
Tôi biết rằng nó find
có tính năng tuyệt vời: -exec
nhưng tôi không thể làm cho nó hoạt động.
Đây chỉ là một ví dụ để có được một ý tưởng về những gì tôi muốn làm. Rộng rãi: Làm thế nào để thực thi một lệnh trong đó tập tin được tìm thấy (bởi find
) đệ quy?
-execdir
cho việc này.