rm 利用 ls -l, grep, awk 命令删除指定时间创建的文件或目录

rm 利用 ls -l, grep, awk 命令删除指定时间创建的文件或者目录

ls -l | grep time | awk '{printf "%s ", $column}' | xargs rm

其中:
time : time 是需要改写成指定时间的参数。如: 2017-07-31
“%s ” : %s 后面有一个空格,不然提取出来的文件名都会连接在一起
$column : column 是文件名所在的域。


另外:
ls -l : 显示当前目录下所有文件的时间信息
grep: 在文本文件中搜索指定的内容并把所在的行打印出来的命令(其他操作请自行搜索);
awk:把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理(此处的作用是提取出 grep 命令输出的所有文件或者目录名并以空格分隔)
xargs:读取 stdin, 把格式化的数据传递给命令(用于不支持 “|” 管道来传递参数的命令)
rm:删除文件或目录的命令( -r: 递归删除,使其能够删除目录; -v: 显示删除的过程)


示例:

-rw-r--r-- 1 root root 0 2017-07-31 15:04 1
-rw-r--r-- 1 root root 0 2017-07-31 15:04 2
-rw-r--r-- 1 root root 0 2017-07-31 15:04 3
-rw-r--r-- 1 root root 0 2017-07-31 15:04 4
-rw-r--r-- 1 root root 0 2017-07-31 15:05 5

以上示例中的 文件名 在第 8 个域(1,2,3…是文件名), 每一个域(列)是按照空格分隔的;

  • 删除 15:04 分创建的文件或者目录。
ls -l | grep 15:04 | awk '{printf "%s ", $8}' | xargs rm -rv
  • 删除 2017-07-31 当天创建的所有文件或者目录。
ls -l | grep 2017-07-31 | awk '{printf "%s ", $8}' | xargs rm -rv

猜你喜欢

转载自blog.csdn.net/qq1452008/article/details/76445987
今日推荐