文件分类
#!/bin/bash
if [ "$#" -ne 1 ]; thenecho "use: $0 <download_url>"exit 1
fi
TARGET_DIR="$1"
mkdir -p "$TARGET_DIR/jpg"
mkdir -p "$TARGET_DIR/mp4"
for img in "$TARGET_DIR"/*.jpg; doif [ -e "$img" ]; thenmv "$img" "$TARGET_DIR/jpg/"fi
done
for video in "$TARGET_DIR"/*.mp4; doif [ -e "$video" ]; thenmv "$video" "$TARGET_DIR/mp4/"fi
done
删除重复文件:由于文件名相同的文件不一定是重复文件,根据md5值判断文件是否重复比较稳妥
cd "$TARGET_DIR/jpg" || exit
for file in *; doif [ -e "$file" ]; thenmd5=$(md5sum "$file" | cut -d ' ' -f 1)if [ $(ls | grep -e "^$md5" | wc -l) -gt 1 ]; thenecho "删除重复文件: $file"rm "$file"fifi
done
将文件分类和去除重复功能封装成函数
#!/bin/bash
if [ "$#" -ne 1 ]; thenecho "use: $0 <download_url>"exit 1
fi
TARGET_DIR="$1"
mkdir -p "$TARGET_DIR/jpg"
mkdir -p "$TARGET_DIR/mp4"
move_files() {local ext="$1" local dest_dir="$2" for file in "$TARGET_DIR"/*."$ext"; doif [ -e "$file" ]; thenmv "$file" "$dest_dir/" && echo "移动文件: $file 到 $dest_dir/"fidone
}
remove_duplicates() {local dir="$1"cd "$dir" || exitdeclare -A file_hashesfor file in *; doif [ -e "$file" ]; thenmd5=$(md5sum "$file" | cut -d ' ' -f 1)if [[ -n "${file_hashes[$md5]}" ]]; thenecho "删除重复文件: $file"rm "$file"elsefile_hashes[$md5]="$file"fifidone
}
move_files "jpg" "$TARGET_DIR/jpg"
move_files "mp4" "$TARGET_DIR/mp4"
remove_duplicates "$TARGET_DIR/jpg"
remove_duplicates "$TARGET_DIR/mp4"