查找并删除Web服务器上子文件夹中的文件名列表

时间:2017-08-31 15:06:32

标签: linux server command cpanel

我有一个大约200个图像文件名的列表。在Web服务器上,在一个目录中的子文件夹结构中有多个具有这些文件名的文件实例。

我是否可以运行命令查找这些文件名的所有实例并将其删除?

文件名示例

  • 图像488363450-1.jpg
  • somename-186758341-1.jpg
  • randomname-588968004-1.jpg
  • blabla124405236-1-1.jpg
  • someimage_MEDIUM.jpg

2 个答案:

答案 0 :(得分:0)

find /path/to/files -type f -name "image*" -exec rm -f {} \;
  • name“FILE-TO-FIND”:文件模式。
  • exec rm -rf {} \; :删除与文件模式匹配的所有文件。
  • type f:仅匹配文件,不包含目录名称。

(这实际上来自here

答案 1 :(得分:0)

假设文件“badFiles”文件包含您要删除的文件名列表,而“myDirs”包含可能存在的子目录列表,则以下内容应该有效:

for file in `cat badFiles`
do
  for dir in `cat myDirs`
  do
    [ -f ${dir}/${file} ] && rm ${dir}/${file}
  done
done

如果目录列表包含当前工作目录中的所有子目录,则以下内容应该无需创建myDirs文件:

for file in `cat badFiles`
do
  for dir in *
  do
    [ -d ${dir} ] && [ -f ${dir}/${file} ] && rm ${dir}/${file}
  done
done

要通过SSH调用此方法,您可以将以下脚本的内容放入文件中(在本例中,我将使用位置$ {HOME} /bin/killImages.sh):

编辑〜/ bin / killImages.sh,并使用以下内容。完成后,编写并保存。

#!/bin/bash
cd $1
for file in `cat ~/badFiles`
do
  for dir in *
  do
    [ -d ${dir} ] && [ -f ${dir}/${file} ] && rm ${dir}/${file}
  done
done

然后让你的脚本可执行:

chmod 700 ~/bin/killImages.sh

然后在本地系统上执行:

ssh <user>@<hostname> "bin/killImages.sh /path/to/base/html"

如果您需要先手动上传不良文件列表,您只需在开始播放脚本之前将其scp到位:

scp badFiles <user>@<hostname>:.
ssh <user>@<hostname> "bin/killImages.sh /path/to/base/html"

希望这有帮助。