linux - 在我的网络服务器上的子文件夹中查找和删除文件名列表

标签 linux server command cpanel

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

有没有我可以运行的命令来查找这些文件名的所有实例并删除它们?

文件名示例

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

最佳答案

假设文件“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"

希望这对您有所帮助。

关于linux - 在我的网络服务器上的子文件夹中查找和删除文件名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45984694/

相关文章:

linux - 如何在shell脚本中获取函数内部的脚本名称?

c# - Phpseclib 在 session 中生成 RSA key (使用 C# 客户端)

python - Django 运行服务器错误 : unsupported operand type(s) for +=: 'NoneType' and 'str'

shell - Unix命令创建目录并进入

linux - 将环境设置导入 Makefile(ubuntu 和 osx)

linux - QT可以打开一个Linux终端然后写入吗?

linux - 设备树和GPIO

javascript - 由于 http 导致 CORS 不匹配

java - 如何在Java中执行sudo命令并获得错误输出?

linux - 在 tarball 目录中搜索文件?