查詢並轉換 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 行尾。
務必確保您轉換的檔案已備份,以便在轉換出現任何問題時可以回滾。