我想運行在所有.DAT包含文本文件perl腳本「some_attr」指定目錄及其子目錄。我怎樣才能做到這一點? 我可以列出包含使用「「some_attr」 所有.dat文件***的grep -nri some_attr * ./'* 和運行perl腳本手動過greped文件,但我想自動化這個用perl選擇性地對所有運行perl腳本**。包含文字「some_attr」目錄和子目錄dat文件
-1
A
回答
1
假設你有一個Bash shell中,你可以使用一個簡單的for循環使用grep結合:
for file in `grep -lr some_attr | uniq`
do
perl script_name.pl $file
done
1
您可以使用File::Find
或File::Find::Rule
:
use strict;
use warnings;
use autodie;
use File::Find::Rule;
# find all the .dat files in .
my @files = File::Find::Rule->file()
->name('*.dat')
->in('.');
for my ($file) {
my $data = do {
open my $fh, '<', $file;
local $/;
<$fh>;
};
next if $data !~ /some_attr/;
print $file, "\n";
}
+0
所以我必須更換打印$文件,「\ n」;用我的perl腳本。例如perl -i_ myscript.pl $文件 – user3814771
+0
你可以這樣做。或者你可以使用這種類型的邏輯來編輯你的perl腳本。我不知道這是一次性操作,還是您希望perl腳本永久具有此功能。 – Miller
相關問題
- 1. 對目錄中的所有文件運行python腳本
- 2. 如何獲取包含所有子目錄文件的目錄中的文件?
- 3. bash腳本 - 重命名目錄包含*空間*()*所有文件 -
- 4. 列出目錄+子目錄中的所有文件和目錄
- 5. 如何使用grep來提取目錄和子目錄中所有文件中包含的所有IP地址?
- 6. 對所有級別的子目錄中的文件運行腳本
- 7. 重命名目錄和一些包含的文件/子目錄
- 8. 下載整個目錄(包含文件和子目錄)
- 9. 刪除包含非空子目錄和文件的目錄
- 10. 腳本蝙蝠刪除所有文件和目錄中的所有目錄c:\
- 11. 讀取目錄中的所有文件,包括其子目錄
- 12. 如何在目錄和子目錄下運行所有批處理文件?
- 13. Hyper目錄 - 除了子目錄和文件列表之外,Linux(Linux)目錄是否也包含文本本身?
- 14. Perforce:列出當前目錄中的所有文件,但不包含子目錄
- 15. 帕格條件包含文件路徑的所有子目錄
- 16. Bash腳本對目錄中的所有文件執行命令
- 17. shell腳本從linux目錄中刪除文件和子目錄
- 18. 腳本遍歷目錄和子目錄到列表文件
- 19. Windows打開文件對話框,包含所有文件+子目錄
- 20. Perl:如何打包和解壓目錄中的所有內容,包括文件和子目錄
- 21. 我如何獲得目錄和子目錄中的所有文本文件?
- 22. 獲取僅包含文件的所有子目錄
- 23. 列出目錄中的文件和所有子目錄
- 24. 列出目錄和子目錄中的所有jpg文件
- 25. 禁用eslint目錄和子目錄中的所有文件
- 26. 列出目錄中的所有文件和子目錄C#
- 27. 保持目錄和所有子目錄遞歸除了文件
- 28. 列出目錄中的所有子目錄和文件
- 29. 在根目錄和所有子目錄中的Foreach文件
- 30. 尋找通過目錄中的所有文件和子目錄
我試過,但有些文件有多次出現的some_attr,並且它多次運行 – user3814771
您可以將grep的結果傳遞給'uniq'以僅一次獲取文件名。 –
-l被定義爲只打印一次文件的名稱,所以要麼你有一個壞的grep或其他的東西出錯了。 –