Shell-Script
檢查特定目錄中的文件是否具有正確的副檔名?
我創建了一個腳本,該腳本將創建幾個目錄,然後通過根據副檔名(即
.gif
inmedia
、.jpg
inpictures
)將它們移動到特定的子目錄中來組織一個目錄中的其他文件。現在我必須檢查這些目錄以確保它們只包含具有正確副檔名的文件。
以下是我到目前為止提出的評論,解釋了我的目標:
#!/bin/bash #iterate over each DIRECTORY once #while in DIRECTORY list the files it contains #check the extension of containe files with given list of EXTENSIONS #if file has wrong extension print error message and stop loop #if all files are in corret DIRECTORY print confirmation message echo "Checking: $DIRECTORY for:$EXTENSIONS" for (( i = 0; i < 4; i++ )); do if [[ i -eq 1 ]]; then DIRECTORY="documents" EXTENSIONS="*.txt *.doc *.docx" #list files and check EXTENSIONS elif [[ i -eq 2 ]]; then DIRECTORY="media" EXTENSIONS="*.gif" #if I equals 2 then look into media DIRECTORY #list files and check EXTENSIONS elif [[ i -eq 3 ]]; then DIRECTORY="pictures" EXTENSIONS="*.jpg *.jpeg" #if I quals 3 then look into pictures DIRECTORY #list files and check EXTENSIONS else DIRECTORY="other" EXTENSIONS="*" #statements fi done
您是否只列印所有與您的副檔名不匹配的文件?
find documents -type f ! \( -name \*.txt -o -name \*.doc -o -name \*.docx \) find media -type f ! -name \*.gif find pictures -type f ! \( -name \*.jpg -o -name \*.jpeg \)
為什麼你需要檢查
other
那裡是否允許任何東西?順便說一句,Unix 慣例是:“沒有輸出=好消息”。所以上面的命令只是列印與指定的副檔名不匹配的文件;如果一切順利,他們將不會列印任何內容。
PS:這是程序員進化的一個很好的例子。;)