解决文件无法按照`内容创建时间`进行排序的问题
1 票
背景
文件夹中的文件列表具备四个时间属性,创建时间、修改时间、上次打开时间、内容创建时间(图1),但是系统默认不支持按照内容创建时间进行排序(图2)
图1
图2
需求
解决MacOS的文件,无法按照内容创建时间进行排序的问题
思路
文件转换重命名,将原文件名使用内容创建时间进行重命名,然后按照名称进行排序
实现
编写一个 Bash 脚本,用于遍历一个文件夹中的图片文件,使用 mdls
命令获取图片的内容创建时间,并将结果存储到一个变量中进行赋值重命名
#!/bin/bash
# 源文件夹
source_dir="/path/to/source/directory"
# 目标文件夹
target_dir="/path/to/target/directory"
# 遍历源文件夹中的所有图片文件
for file in "$source_dir"/*.{jpg,jpeg,png,gif,bmp}; do
if [ -f "$file" ]; then
# 获取文件的内容创建时间
creation_date=$(mdls -name kMDItemContentCreationDate -raw "$file")
# 格式化日期为YYYYMMDDHHMMSS
new_filename=$(date -j -f "%Y-%m-%d %H:%M:%S %z" "$creation_date" "+%Y%m%d%H%M%S")
# 获取文件的扩展名
extension="${file##*.}"
# 构建目标文件的路径
target_file="$target_dir/$new_filename.$extension"
# 检查目标文件是否存在,如果存在则添加随机数字
count=1
while [ -e "$target_file" ]; do
random_number=$(shuf -i 1-99999 -n 1)
new_filename="$new_filename-$random_number"
target_file="$target_dir/$new_filename.$extension"
count=$((count + 1))
done
# 复制文件并重命名
cp "$file" "$target_file"
echo "已重命名并复制 $file 到 $target_file"
fi
done