.txt
디렉터리에 존재하는 여러 파일의 이름(전체 경로 이름이 아님)이 포함된 텍스트 파일이 있습니다. 각 파일에는 삭제하려는 다른 파일에 대한 (전체) 경로가 있습니다.
list.txt
텍스트 파일의 이름을 가진 ""라는 파일이 있다고 가정해 보겠습니다.
pathtodelete1.txt
pathtodelete2.txt
something else that is the same as pathtodelete.txt
이러한 각 파일에는 내부적으로 저장된 경로가 있습니다 pathtodelete1.txt
./directory/randomfilename.txt
나는 xargs
성공하지 못한 채 다양한 조합을 시도했습니다.
답변1
제한된 테스트에서 이것은 나에게 효과적이었습니다.
cat list.txt | xargs cat | xargs rm
파일을 삭제하는 데 사용하므로 먼저 비파괴적인 명령을 사용하여 테스트해 볼 수 있습니다.
cat list.txt | xargs cat | xargs echo
답변2
while read TXT; do head -1 $TXT | xargs rm; done < list.txt
답변3
echo
이 스크립트는 원하는 작업을 수행해야 합니다. 실행에 대한 보고서를 보고 싶지 않으면 이러한 문을 주석 처리하거나 완전히 무시할 수 있습니다.
원하는 대로 작동한다고 만족스러우면 :
문의 시작 부분부터 삭제하면 실제로 지정된 파일이 삭제됩니다.rm
#!/bin/bash
# Look in list.txt for files containing items to delete
while IFS= read -r file
do
echo "Considering $file" >&2
# Read the path to delete from the file
path="$(cat "$file" 2>/dev/null)"
# If it looks like a pathname try to delete it
if [[ "$path" =~ ^/ ]] && [[ -f "$path" ]]
then
echo "> $path" >&2
: rm -f "$path"
fi
done <list.txt