删除文件中存储的目录列表

删除文件中存储的目录列表

我有以下路径中的目录名称列表

/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

相关内容