jiawei2426 发表于 2023-07-22 14:09

请教大神shell如何删除一个文本文件中没有列出的所有文件夹

我有一个文本文件列出了所有需要的问价夹,格式如下:
AAA
BBB
CCC
然后在我的路径下有很多文件夹,例如:
AAA BBB CCC DDD EEEFFF ...... ZZZ
请教大神shell如何删除一个文本文件中没有列出的所有文件夹?

wh7211 发表于 2023-07-24 22:47

回复 1# jiawei2426


cat 1
AAA
BBB
CCC

awk '{a[$1]++}END{while(("ls -p"|getline b)>0){if(b~/\/$/){sub(/\//,"",b);if(!a){system("rm -rf "b"")}}}}' 1

legs 发表于 2023-07-25 15:03

本帖最后由 legs 于 2023-07-25 15:09 编辑

给你个另一种解法:perl -lnE'--$h{$_}}{++$h{$_}&&-d&&`rm -rf $_`for<*>' x.txt

Shell_HAT 发表于 2023-07-26 16:48

回复 1# jiawei2426


test-1.sh
#!/bin/bash
FileList="1.txt"
for ThisFolder in `ls -1p | grep '/`; do
    grep -x -q "${ThisFolder:0:-1}" $FileList
    if [ $? -ne 0 ]; then
      rm -rf "$ThisFolder"
    fi
done

Shell_HAT 发表于 2023-07-26 17:00

回复 1# jiawei2426


test-2.sh

#!/bin/bash
FileList="1.txt"
FileTemp="/dev/shm/1.tmp"
ls -1p | grep '/' | sed 's#/##' > $FileTemp
for ThisFolder in `grep -vxFf $FileList $FileTemp`; do
    rm -rf "$ThisFolder"
done
页: [1]
查看完整版本: 请教大神shell如何删除一个文本文件中没有列出的所有文件夹