如何使用 PHP 或任何其他命令删除所有具有命名例外的文件和文件夹

如何使用 PHP 或任何其他命令删除所有具有命名例外的文件和文件夹

我想删除除特定文件之外的所有文件和目录。是否有任何 PHP 脚本可以帮助我?

以下是一个例子:

目录名称:

/home/root/database/

“数据库”目录中的文件包括:

  [include]
   [img]
  [file]
  index.php
  index.html
 .htaccess
 index.jpg
 index.png
  readme.txt
  video.mp4
  music.mp3

我想删除除.htaccessindex.php目录之外的所有文件[file]

是否有任何命令可以保存这些文件并删除其他文件或任何 php 代码?

答案1

命令行

首先复制所有内容:

tar -cf /to/a/save/place/PHP_backup.tar *

其中 /to/a/save/place 是该路径之外的任何目录。

现在您可以使用以下命令:

rm -rv !(.htaccess|index.php|file)

从 php 中删除文件

如果你必须使用 php,你可以使用这个功能并修改它以保留所需的文件和目录。

答案2

trash来自的命令垃圾处理对于这种事情非常方便。它可以在 universe 存储库中找到,如果你没有它,你可以使用以下命令安装它sudo apt install trash-cli

安装后,您只需发出命令

trash !(.htaccess|index.php|file)它会告诉它丢弃所有与括号中的内容不匹配的内容。在本例中是 .htaccess 、 index.php 和目录文件。

当然,这需要打开扩展模式匹配,shopt -s extglob如所述甜点在此评论

使用这种方法时,确实没有必要备份 tar 文件中的所有内容,因为您丢弃的所有内容都会放在垃圾箱中,如果您犯了错误,您可以通过restore-trash选择要恢复的相应文件或目录来进行恢复。

如果你必须使用 PHP,请参阅解除鏈接。

这个答案的灵感部分来自于这个

相关内容