我已经创建了一个脚本,它将创建几个目录,然后通过根据文件的扩展名(即,.gif
在)将其他文件从一个目录移动到特定的子目录中来组织它们。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:这是一个很好的例子程序员的进化。 ;)