我有一个充满子目录的目录,如下所示:
Track_0000111
Track_0004444
Track_0022222
Track_0333333
Track_5555555
我想删除某些目录,如果它们包含在文件“RemoveFromTop6000_reformatted.txt”中的列表中
文本文件的内容如下所示:
Track_0000111
Track_0022222
Track_0333333
我尝试编写一个小脚本来处理这个问题,但它似乎不起作用:
#!/bin/bash
for file in cat RemoveFromTop6000_reformatted.txt; do
rm -rfv $file
done
不幸的是,这只是删除了文本文件,而不是目录。有什么提示吗?
谢谢!
答案 0 :(得分:2)
你忘记了对猫的呼叫的反引号。没有它们,rm
只会删除文件cat
(可能不存在,但您可能不会注意到,因为您正在使用rm -f
)和{{1 }}
试试这个:
RemoveFromTop6000_reformatted.txt
或者更简单地说,
#!/bin/bash
for file in `cat RemoveFromTop6000_reformatted.txt`; do
rm -rv "$file"
done
(但这仅在目录名称不包含空格时才有效。)
答案 1 :(得分:1)
无需for
,对于类似这样的内容,您可以像while read ...; do ... done < file
这样做:
#!/bin/bash
while read file
rm -rfv "$file"
done < RemoveFromTop6000_reformatted.txt
答案 2 :(得分:0)
你可以尝试下面的命令,
<强>命令:强>
sed 's/^/"/g' sample.txt | sed 's/$/"/g' | xargs rm -rfv
说明强>
命令将删除文件以及&#34; sample.txt&#34;中提到的目录。
注意: