查詢並轉換 Linux 系統中以 CRLF 結尾的檔案


您可以使用 Linux 中的 find 命令搜尋以 CRLF 結尾的檔案,並使用 dos2unix 命令將這些檔案轉換為使用 LF 行尾。

要搜尋以 CRLF 結尾的檔案,可以使用以下命令:

find /path/to/search -type f -exec grep -Iq . {} \; -and -exec grep -Il $'\r' {} +

此命令搜尋目錄“/path/to/search”及其子目錄中的所有常規檔案,並列印包含 CRLF 行尾的檔名。

確定需要轉換的檔案後,可以使用 dos2unix 命令進行轉換。dos2unix 命令是一個命令列實用程式,可以將檔案從 Windows 風格的行尾 (CRLF) 轉換為 Linux 風格的行尾 (LF)。

您可以透過執行以下命令來轉換特定檔案:

dos2unix file.txt

或者,您可以執行以下命令來轉換多個檔案:

find /path/to/search -name "*.*" -exec dos2unix {} +

這將遞迴轉換 /path/to/search 下的所有檔案。

請注意,可能需要在您的系統上安裝 dos2unix 命令。如果您收到“command not found”錯誤,則可以透過執行適合您 Linux 發行版的相應包管理器命令來安裝它。

搜尋具有 CRLF 結尾的檔案

您可以使用 grep 命令搜尋具有 CRLF(回車符 + 換行符)行尾的檔案。一種方法是使用 -r 選項遞迴搜尋目錄,使用 -l 選項僅列印包含匹配項的檔名,並使用 $'\r' 正則表示式匹配 CR 字元。

例如,以下命令將搜尋目錄 /path/to/search 及其子目錄中所有包含 CRLF 行尾的檔案,並列印這些檔名:

grep -rl $'\r' /path/to/search

或者,您可以結合使用 find 命令和 grep 命令

find /path/to/search -type f -exec grep -Iq . {} \; -and -exec grep -Il $'\r' {} +

此命令將遞迴搜尋 /path/to/search 下的內容,並列印具有 CRLF 行尾的檔名。

使用 cat 命令搜尋具有 CRLF 結尾的檔案

您可以將 cat 命令與 grep 命令結合使用來搜尋具有 CRLF(回車符 + 換行符)行尾的檔案。cat 命令用於連線並顯示檔案的內容,可以與 grep 命令結合使用以搜尋檔案中的特定模式。

一種搜尋具有 CRLF 行尾的檔案的方法是使用 find 命令的 -r 選項遞迴搜尋目錄,並使用 cat 命令的 -n 選項在輸出中顯示行號。

例如,以下命令將搜尋目錄 /path/to/search 及其子目錄中的所有檔案,並顯示出現 CRLF 行尾的行號。

find /path/to/search -type f -exec sh -c 'cat -n "$1" | grep $'\r'' {} \;

此命令將列印具有 CRLF 行尾的檔案中的行號。您可以根據需要修改上述命令,將 cat 的 -n 選項替換為其他選項,並且 -type f 用於僅搜尋檔案,如果您想搜尋其他型別(例如目錄),則可以相應地更改它。

使用 sed 命令將 CRLF 轉換為 LF

您可以使用 sed 命令將 CRLF(回車符 + 換行符)行尾轉換為 LF(換行符)行尾。sed 代表“流編輯器”,它可以用於對輸入流(檔案或來自管道的輸入)執行基本的文字轉換。

以下是一個示例命令,它將檔案 file.txt 中的 CRLF 行尾轉換為 LF:

sed -i 's/\r
/
/g' file.txt

-i 選項用於就地編輯檔案。s/\r
/
/g 是一個正則表示式,它搜尋 \r
(CRLF)並將其替換為
(LF)。表示式末尾的 g 表示應替換所有出現的。

您還可以將 find 命令與 sed 命令結合使用以一次轉換多個檔案。以下命令將遞迴搜尋目錄 /path/to/search 下的內容,並將所有具有 CRLF 行尾的檔案轉換為 LF 行尾。

find /path/to/search -type f -exec sed -i 's/\r
/
/g' {} +

命令末尾的 {} + 用於將多個檔名一次傳遞給 sed 命令,以便可以同時修改多個檔案。

請記住,如果 sed 命令的 -i 選項在沒有指定字尾的情況下使用,它會建立一個備份檔案。可以使用所需的字尾覆蓋它,例如 -i.bak。

結論

總之,有多種方法可以在 Linux 系統上搜索和轉換具有 CRLF 行尾的檔案。grep、find、dos2unix、sed 和 cat 命令都是完成此任務的有用工具。

grep 可用於搜尋包含 CRLF 行尾的檔案並列印這些檔名。

find 可用於遞迴搜尋目錄及其子目錄中的檔案,並在與特定模式匹配的檔案上執行命令。

dos2unix 是一個命令列實用程式,可以將檔案從 Windows 風格的行尾 (CRLF) 轉換為 Linux 風格的行尾 (LF)。

sed 可用於對檔案執行基本的文字轉換,例如將 CRLF 行尾替換為 LF 行尾。

cat 命令可用於顯示檔案的內容,並與 grep 命令結合使用可用於搜尋檔案中 CRLF 行尾。

務必確保您轉換的檔案已備份,以便在轉換出現任何問題時可以回滾。

更新於:2023年1月24日

12K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告