備份程式設計目錄

備份程式設計目錄

我有一個目錄,其中包含許多我想要備份的已編譯的 C 程式。現在它們已被命名,program.out但我想將其更改為program.

是否還可以排除這些?另外,我會使用什麼樣的正規表示式來快速重新命名它們?

答案1

若要備份程式碼,請使用 git 或其他版本控制軟體。在網路上,您有很多選擇:github、bitbucket。

在 git 中,如果你加入 *.out 文件,你會得到文件 .gitignore 那麼它不會被傳輸到儲存庫

答案2

你的第一個問題我不太清楚。如果您想重新命名program.out為,program則只需運行:

mv program{.out,}

/etc對於第二個問題,假設我想取得帶有後綴的檔案清單:

#!/bin/bash
ls /etc > /tmp/etcfiles
while read line
do
   if [[ $line =~ \..+ ]]; then
      echo $line
   fi
done < /tmp/etcfiles

您可以根據需要調整以上內容。

  • \.匹配字面句號。
  • .匹配句點後面的任何字元。
  • +表示至少一個字元必須位於初始句點之後。所以這將匹配,但test.c不匹配。test.test.+*

答案3

如果您使用 bash 作為 shell,這對於 shell 管道來說是一個簡單的任務。

ls | grep '\.out$' | while read file; do echo mv "$file" "${file%.*}"; done

ls產生目錄中的檔案列表。

grep '\.out$'提取以 .out 結尾的檔案名稱並丟棄其餘部分。

while read file一次讀取一個檔案名稱。

echo mv "$file" "${file%.*}"顯示但不執行將每個檔案重新命名為不含副檔名的版本的 mv 命令。業務${file%.*}是用於剝離檔案副檔名的 bash 語法。當您確信管道在實際運行時能夠滿足您的要求時,請刪除該echo部分並讓它真正運作。

ls | grep '\.out$' | while read file; do mv "$file" "${file%.*}"; done

相關內容