我已经编写了一个shell脚本,它基本上查找了rar文件并将它们取消。检查一个文件是否存在于一个给定的目录中,而不是子目录
为了避免多次解开同一个文件,我添加了一个我将要解析的文件类型的检查,即* .avi,* .mkv和* .mp4。
find "/mnt/media1/TV Shows/" -type f -name "*.rar" -print0 | while IFS= read -r -d '' file; do
DIR=$(dirname "${file}")
MKV=$(find "${DIR}" -name "*.mkv" -print0)
AVI=$(find "${DIR}" -name "*.avi" -print0)
MP4=$(find "${DIR}" -name "*.mp4" -print0)
if [ ! -f "$MKV" ] && [ ! -f "$AVI" ] && [ ! -f "$MP4" ]; then
printf "UNRARING ${DIR}\n" >> /home/johan/unrarer.log
sudo unrar e "${file}"
MKV=$(find "${DIR}" -name "*.mkv" -print0)
AVI=$(find "${DIR}" -name "*.avi" -print0)
MP4=$(find "${DIR}" -name "*.mp4" -print0)
if [ ! -f "$MKV" ] && [ ! -f "$AVI" ] && [ ! -f "$MP4" ]; then
printf "UNRAR FAILED\n" >> /home/johan/unrarer.log
else
printf "UNRAR SUCCESSFUL\n" >> /home/johan/unrarer.log
fi
else
printf "${DIR}: Found an mkv, avi or mp4 file, skipping\n" >> /home/johan/unrarer.log
fi
done
现在的问题是,大多数,如果不是全部,目录有在它的视频文件中的“样本”子目录中。这个文件被标记为我当前的实现,这不是我的愿望。
我希望它在确切的目录,$DIR
,而不是它的任何子目录。
目前我已经做了一个解决方法,我只是简单地删除示例目录,如果它存在,但这打破了山洪。
我尝试过试验一下-wholename,但我还没有找到任何可行的方法。
任何帮助表示赞赏。
问候, 约翰
检查“发现”您的系统上的联机帮助 - 雷说: :“-maxdepth levels |在命令行参数下的大多数目录级别(非负整数)级别下降-maxdepth 0表示仅将测试和操作应用于命令行参数。” –