得到一个类似" index.txt"的文件包含几行书名,如:
book 1.pdf<br>
book 1.opf<br>
book2.epub<br>
book3.opf<br>
等等,1个标题= 1行
我想在bash中做这件事:
rm -rf from $dir IF $file IS NOT in index.txt
我怎么能这样做?
答案 0 :(得分:1)
您可以使用以下命令。
find <dir> -name "*" | grep -vFf index.txt | xargs rm -rf
find
:列出指定目录中的所有文件
grep-vFf
:使用文件输入反向grep(将列出输入文件中找不到的文件。在这种情况下,它是index.txt)
xargs rm -rf
:删除在该文件中找不到的每个文件 名单。获取此删除列表作为先前grep的输出 命令
编辑:
当文件名包含空格时,请使用以下命令。
find <dir> -name "*" | grep -vFf index.txt |sed 's/^/"/;s/$/"/' | xargs rm -rf
sed会为所有文件名添加引号。
答案 1 :(得分:0)
您可以使用
删除txt文件中列出的文件#!/bin/sh
while read line;
do
rm `echo $dir/line`
done<list.txt