我有以下路径中的目录名称列表
/home/list/list.txt
目录均位于以下路径中
/home/directory/
如何使用命令行删除列表中包含的目录?
答案1
从...开始
xargs -I{} echo rm -fr /home/directory/{} </home/list/list.txt
它只是回显要执行的命令,如果可以,则删除回显。
答案2
假设目录是空的,我会说......
while IFS= read -r directory
do
#rmdir /home/directory/"$directory"
echo rmdir /home/directory/"$directory"
done < /home/list/list.txt
一旦您看到echo
您希望它能正常工作,请取消注释rmdir
。
这将按顺序循环遍历的内容/home/list/list.txt
并将每行的值存储在中$directory
。然后,它执行rmdir
操作。
请注意使用双引号,以防止名称包含空格时出现错误。IFS=
和read -r
在如何逐行(和/或逐字段)读取文件(数据流、变量)?,
如果目录不为空,并且您完全确定关于您正在做的事情,请使用rm -r
。然后您可以添加-f
强制 (再次:如果您确定) 或-v
以获得详细输出。
答案3
你熟悉 Python 吗?
from os import system
lines = open("/home/list/list.txt", 'rb').readlines()
for i in range(0, len(lines)):
currentline = lines[i]
rmcommand = "rm -r " + currentline.strip('\n')
system(rmcommand)
这将获取列表,将行拆分为一个数组,然后对数组中的每个索引发出一个命令。strip
如果存在,则删除尾随的换行符。
答案4
使用awk
简单的一行代码
awk '{system ("rm -r /home/directory/\""$0"\"")}' /home/list/list.txt
该命令遍历输入文件中的条目并rm
通过创建命令system
。