Shell-Script

檢查特定目錄中的文件是否具有正確的副檔名?

  • April 17, 2016

我創建了一個腳本,該腳本將創建幾個目錄,然後通過根據副檔名(即.gifin media.jpgin pictures)將它們移動到特定的子目錄中來組織一個目錄中的其他文件。

現在我必須檢查這些目錄以確保它們只包含具有正確副檔名的文件。

以下是我到目前為止提出的評論,解釋了我的目標:

   #!/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:這是程序員進化的一個很好的例子。;)

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