Bash 腳本尋找目錄中檔案的內容並新增值

Bash 腳本尋找目錄中檔案的內容並新增值

我有一個包含大量文件的目錄。我想寫一個 bash 腳本 -

  1. 輸入該目錄
  2. 找出其中哪些是 Perl 腳本(但它們都沒有 .pl 副檔名)
  3. 在每一行的頂部添加一行(我打算添加新的shebang)如果不是Perl腳本,則不執行任何操作

我無法搜尋 Perl 腳本,嘗試使用 grep 但沒有得到正確的命令。另外,第三步也是我陷入困境的地方。

答案1

要找到perl文件,最多只能用perl本身來判斷。perl-c如果檔案不是正確的 perl 程式碼,則傳回非零退出程式碼,這對於大多數根本不是 perl 的檔案來說絕對是正確的。不幸的是,當它輸入有錯誤的 perl 程式碼時,它會執行相同的操作,並且當檔案實際上不是 perl 程式碼但可以像它一樣無錯誤地解析時傳回 0。如果你可以忍受這種風險,那麼它的核心可能是這樣的:

for FILE in * ; do
   if perl -c "$FILE" >/dev/null ; then
      sed -i -e '1i#!/usr/bin/perl' "$FILE"
   fi
done

備註:一旦我接觸到這些文件,我就會添加 .pl 副檔名,除非有一些非常嚴重的原因導致我盲目。

相關內容