Files

刪除文件名中的換行符

  • April 5, 2019

我有一個 PHP 程式碼,它生成 wget 將在其上附加其日誌的文件名。我生成了 2000 多個文件,但問題是我無法使用它們,因為我錯誤地將PHP_EOL其作為其名稱的一部分,該程式碼將添加 LF/line feed/%0A到其名稱中

此類文件名的範例(通過瀏覽器訪問時,放在 /var/www/html 上時)http://xxxx/wget_01_a%0a.txt注意%0a副檔名之前

我搞砸了,我希望有一個重命名批處理可以搜尋所有文件,如果找到line feed它會在沒有換行的情況下重命名它,所以它只是http://xxxx/wget_01_a.txt

我不太確定如何處理這個問題,因為似乎當我ls在膩子上所有特殊字元不限於不需要的字元時?,我只希望針對的是換行符。

使用renameCentOS 6 提供的 util-linux 中的實用程序,並假設 bash:

rename $'\n' '' wget_*

這要求從列出的文件的名稱中刪除換行符。我建議在一個小子集上嘗試它,以確保它可以滿足您的需求(請注意,rename在 CentOS 7 上,它支持一個-v開關來向您顯示它正在做的更改)。

相反,如果您使用的是提供基於 Perl 的發行版rename

rename -n 's/\n//g' wget_*

然後執行而不-n實際執行重命名。

引用自:https://unix.stackexchange.com/questions/189784