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 testdirnhư 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 đó findtì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 filetrong mỗi thư mục nơi .pdftì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ó findcó tính năng tuyệt vời: -execnhư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?
-execdircho việc này.