.gif
複数のディレクトリを作成し、ファイル拡張子(たとえばin)に従って、あるディレクトリ内の他のファイルを特定のサブディレクトリに移動して設定するスクリプトを作成しました。media
.jpg
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
ベストアンサー1
拡張子と一致しないすべてのファイルを印刷するのはどうですか?
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:これは良い例です。プログラマーの進化。 ;)