要删除文件夹中的文件,只保留日期最新的五份文件,可以使用以下方法之一:
方法一:使用 Shell 脚本
这是一个简单的 Shell 脚本,可以按修改时间排序文件,并删除除最新5个之外的所有文件:
#!/bin/bash
# 定义目标目录
target_directory="/path/to/your/files"
# 查找目标目录中的所有文件,按修改时间排序,跳过最新的5个文件,然后删除其余文件
cd "$target_directory" || exit
ls -t | tail -n +6 | xargs -I {} rm -- {}
ls -t
:按修改时间排序列出文件(最新的文件在前)。tail -n +6
:从第6行开始显示,即跳过前5个最新文件。xargs -I {} rm -- {}
:删除选定的文件。
多个目录删除
#!/bin/bash
#本脚本用于清理/home/ftp_usr/micaps/radar/RADAR_PUP_PRODUCTS/未导入雷达文件
# 定义目标目录列表
target_directories=(
"/home/ftp_usr/micaps/radar/RADAR_PUP_CR"
"/home/ftp_usr/micaps/radar/RADAR_PUP_V_R"
"/home/ftp_usr/micaps/radar/RADAR_PUP_CAR_ET_HI"
"/home/ftp_usr/micaps/radar/RADAR_PUP_M_DOHP_DTHP_STP" #94
"/home/ftp_usr/micaps/radar/RADAR_PUP_VWP_VIL_TI"
# Add more directories as needed
)
# 循环遍历每个目标目录
for target_directory in "${target_directories[@]}"; do
echo "处理目录: $target_directory"
# 进入目标目录,如果无法进入,则跳过此目录
if ! cd "$target_directory"; then
echo "无法进入目录: $target_directory"
continue
fi
# 查找目录中的文件,按修改时间排序,保留最新的5个文件,然后删除其余文件
ls -t | tail -n +2001 | xargs -I {} rm -- {}
echo "完成目录: $target_directory"
done
方法二:使用 find
和 sort
命令
也可以使用 find
命令结合 sort
和 tail
来实现:
target_directory="/path/to/your/files"
# 找到目标目录中的所有文件,按修改时间排序,跳过最新的5个文件,然后删除其余文件
find "$target_directory" -type f -printf '%T@ %p\n' | sort -n | head -n -5 | cut -d' ' -f2- | xargs -I {} rm -- {}
find "$target_directory" -type f -printf '%T@ %p\n'
:找到指定路径下的所有文件,并打印出文件的修改时间和路径。sort -n
:按时间戳进行数字排序(从最早到最新)。head -n -5
:输出除最后5行外的所有行,即除最新的5个文件外的所有文件。cut -d' ' -f2-
:去掉时间戳部分,只保留文件路径。xargs -I {} rm -- {}
:删除选定的文件。
方法三:使用 find
和 sort
命令
可以处理文件名中的空格等特殊字符:
target_directory="/path/to/your/files"
find "$target_directory" -type f -printf '%T@ %p\n' | sort -n | head -n -5 | cut -d' ' -f2- | while IFS= read -r file; do
rm -- "$file"
done
解释:
find "$target_directory" -type f -printf '%T@ %p\n'
:找到指定路径下的所有文件,并打印出文件的修改时间和路径。sort -n
:按时间戳进行数字排序(从最早到最新)。head -n -5
:输出除最后5行外的所有行,即除最新的5个文件外的所有文件。cut -d' ' -f2-
:去掉时间戳部分,只保留文件路径。while IFS= read -r file; do rm -- "$file"; done
:逐行读取文件路径并删除,IFS=
防止文件路径中有空格被截断。
这个版本可以更好地处理文件名中含有空格或其他特殊字符的情况。请在执行此命令之前确保已经备份了重要数据,以防误删。
选择适合方法来实现只保留文件夹中最新的5份文件,删除其余文件。请注意在执行删除操作之前,确保已经备份了重要数据,以防误删。