Files
為包含確切字元串的目錄中的所有文件添加副檔名
我有一個包含多個級別和大量文件的大型目錄。這些文件中的大多數(但不是全部)是 HTML 文件,但沒有
.html
副檔名(複製到 Windows 時會出現問題)。所有 HTML 文件的第一行都是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
如何僅通過使用命令將
.html
副檔名添加到包含此字元串的所有文件中?我見過這個SO question,但它不會根據是否包含字元串來重命名。
假設所有非擴展
.html
文件都沒有副檔名,這裡有一個簡單的 bash 腳本來完成你所需要的。find . -type f ! -iname "*.html" -a ! -iname "*.htm" | while IFS= read -r file; do head -1 "${file}" | if grep -q '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' ; then mv "${file}" "${file}.html" fi done
此腳本按順序執行以下操作:
- 遞歸查找目前目錄和子目錄中沒有
.html
副檔名的所有文件。- 檢查找到的文件第一行是否是您提供的字元串。
- 如果第一行匹配,則文件被重命名以包含
.html
副檔名。