파일을 삭제하려면 헤더 목록과 와일드카드를 사용해 보세요. 파일의 헤더는 동일하지만 엔딩이 다릅니다. 와일드카드를 얻는 방법을 잘 모르겠습니다.
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:r
r
csh/vim과 유사한 oot 이름을 제공합니다 (확장자 하나가 제거됨).$var
$var