我在错误的目录中提取了一个 tar 文件,这个 tar 文件提取了 200 个文件。我无法从目录中删除所有内容,因为目录中有 10 个文件,并且是需要的。
答案1
就我个人而言,我会将 tar 文件提取到一个空目录中,diff --report-identical-files --recursive --brief
将新目录提取到错误目录中,使用一些 sed 脚本提取错误名称并将其转换为一系列rm
命令,然后运行它。
我的 sed 脚本:
#!/bin/sh
stdbuf -oL sed -n \
-e 's/^Files ..*\(\/..*\) and \(..*\1\) are identical$/\2/p' \
-e 's/^File ..*\(\/..*\) is a socket while file \(..*\1\) is a socket$/\2/p' \
-e 's/^File ..*\(\/..*\) is a fifo while file \(..*\1\) is a fifo$/\2/p' \
| stdbuf -oL sed \
-e s/"'"/"'"'"'"'"'"'"'"/g \
-e 's/.*/rm '"'"'&'"'"'/' \
;
更简单的解决方案可能是使用tar -t
.tar 文件生成文件列表,然后删除这些文件。
也许:
tar tf tarfilename.tar | xargs rm -i