Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何按顺序一次删除一个文件?_Shell_Unix - Fatal编程技术网

Shell 如何按顺序一次删除一个文件?

Shell 如何按顺序一次删除一个文件?,shell,unix,Shell,Unix,我在目录中有多个文件,如下所示 Movie22017-06-14_12:18:01.tmp.mp4 Movie22017-06-14_12:18:40.tmp.mp4 Movie22017-06-14_12:19:19.tmp.mp4 Movie22017-06-14_12:19:58.tmp.mp4 Movie22017-06-14_12:20:37.tmp.mp4 问题我想删除这些文件,但不是一次全部删除。我想先删除“Movie22017-06-14_12:18:01.tmp.mp4”,然

我在目录中有多个文件,如下所示

Movie22017-06-14_12:18:01.tmp.mp4
Movie22017-06-14_12:18:40.tmp.mp4
Movie22017-06-14_12:19:19.tmp.mp4
Movie22017-06-14_12:19:58.tmp.mp4
Movie22017-06-14_12:20:37.tmp.mp4

问题我想删除这些文件,但不是一次全部删除。我想先删除“Movie22017-06-14_12:18:01.tmp.mp4”,然后在5秒钟后删除“Movie22017-06-14_12:18:40.tmp.mp4”等等。我怎样才能做到这一点?基本上是先进先出

您可以循环浏览目录中的所有文件,然后在此目录上运行一些代码,例如:

#!/bin/bash
FILES=/path/to/files/here/*
for f in $FILES; do
  echo "Deleting '$f'..."
  rm -f "$f"
  sleep 5
done

注意:如果文件路径中有空格,则此选项将中断

文件名在哪里?在文件中?如果
文件中的路径包含空格或换行符,则会中断此操作。为避免此问题,
查找/path/To/FILES-type f | sort |{while read-rf;do rm-f$f;sleep 5;done;}
(如果不是按字母顺序,则由您定义排序顺序)或只在“/path/f”中键入f | sort | sort{read r f;do rm f$f;sleep 5;done;}
,,或者
mypath='/path/带空格';对于“$mypath”/*中的f;do
@DavidC.Rankin这如何避免问题?您是否必须使用
-print0
sort-z
read-d'
?因为
find
输出是每行一个文件名,
read-rf
将不考虑空格而读取。现在,还有一个问题。这是带有内嵌换行符的文件名(合法但罕见)。这就是您的
-print0
所能防止的。(就我个人而言,我认为任何在文件名中嵌入换行符的人都应该被击中头部,但是……每个人都有自己的
:)