list.txt에서 파일을 제거하고 와일드카드를 사용하는 방법은 무엇입니까?

list.txt에서 파일을 제거하고 와일드카드를 사용하는 방법은 무엇입니까?

파일을 삭제하려면 헤더 목록과 와일드카드를 사용해 보세요. 파일의 헤더는 동일하지만 엔딩이 다릅니다. 와일드카드를 얻는 방법을 잘 모르겠습니다.

NCBI에서 일부 SRA 파일을 다운로드하려고 하는데 다운로드 문제가 있습니다. 올바르게 다운로드되지 않은 파일은 file1.fastq 및 file1.sra.cache(file2, file3 등의 경우)를 생성했습니다. 올바르게 다운로드된 파일은 나에게 file.fastq 및 file.sra.cache를 제공하므로 내 다운로드는 다음과 같습니다. 이것:

file1.fastq
file1.sra
file2.fastq
file2.sra.cache
file3.fastq
file3.sra.cache

file1은 성공적으로 다운로드되었지만 file2 또는 file3은 성공적으로 다운로드되지 않았습니다. file2 및 file3과 관련된 모든 파일을 삭제하고 싶습니다.

어떤 파일이 제대로 다운로드되지 않았는지 알아냈습니다 ls *.sra.cache. 이제 잘못된 파일 헤더 목록이 있습니다(예: file2, file3, ...; 시작에 불과함). 파일 이름 목록을 입력하고 와일드카드를 추가하여 제거하려면 어떻게 해야 합니까?

다음과 같은 와일드카드를 사용하여 파일 이름 목록을 만들고 싶습니다.

file2*
file3*

비슷한 작업을 수행 cat list.txt | xargs rm하지만 와일드카드를 작동시키는 방법을 모르겠습니다. *목록 자체에 넣으면 Unix는 그것이 파일 이름의 일부라고 생각합니다.

답변1

별도의 파일 목록이나 이와 유사한 것을 사용하는 대신 다음 for과 같은 간단한 루프를 사용할 수 있습니다.

for f in *.sra.cache; do
    rm -- "${f%sra.cache}"*
done

${f%sra.cache}sra.cache파일 이름에서 확장자를 제거하십시오.

답변2

그리고 zsh:

rm -f -- *.sra.cache(e['reply=($REPLY $REPLY:r:r.fastq)'])

.sra.cache그러면 각 파일에 해당하는 파일이 삭제됩니다 ..fastq*.sra.cache

$var:rrcsh/vim과 유사한 oot 이름을 제공합니다 (확장자 하나가 제거됨).$var$var

관련 정보