我有一个大约200个图像文件名的列表。在Web服务器上,在一个目录中的子文件夹结构中有多个具有这些文件名的文件实例。
我是否可以运行命令查找这些文件名的所有实例并将其删除?
文件名示例
答案 0 :(得分:0)
find /path/to/files -type f -name "image*" -exec rm -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"
希望这有帮助。