
비슷한 이름의 파일(예: *Sample_name*.base.coverage.txt)이 포함된 일부 디렉터리입니다. 그리고 *base.coverage.txt 파일을 모두 함께 붙여넣고 싶습니다. 뭔가를 썼는데 실제로 붙여넣는 것 같지 않아서 정확하지 않습니다.
cd /g/bo/vir/analysis
find -type d |
while read dir; do
if [ -f $dir/*.base.coverage.txt ]; then
paste $dir/*.base.coverage.txt >> paste_all_l30.p90.base.cov.norm
fi
done
또한 다른 루프 방법을 생각하고 있지만 디렉터리 목록을 배열로 가져오는 방법을 잘 모르겠습니다.
for x in $dir; do cat /$x/*.base.coverage.txt;done > paste_all_l30.p90.base.cov.norm
도움이 필요하세요? 감사해요
답변1
이 시도:
find . -type f -name '*.base.coverage.txt' \
| xargs paste > paste_all_l30.p90.base.cov.norm
파일이 너무 많지 않으면 이 방법이 작동합니다. 파일이 많으면 다음과 같습니다.
touch paste_all_l30.p90.base.cov.norm
for file in `find . -type f -name '*.base.coverage.txt'`; do
paste paste_all_l30.p90.base.cov.norm $file > tmp
mv tmp paste_all_l30.p90.base.cov.norm
done
답변2
이 시도:
find . -type f -name "*.base.coverage.txt" -exec sh -c 'paste {} paste_all_l30.p90.base.cov.norm > tmp ; mv tmp paste_all_l30.p90.base.cov.norm' \;
답변3
여러 디렉터리를 반복하는 가장 쉬운 방법은 짧은 Python 스크립트를 작성하고 함수를 사용하여 os.path.walk
중첩된 디렉터리를 반복하는 것입니다. 추가의 경우 shutil.copyfileobj
루프 내에서 정규식으로 파일 이름을 확인하는 데 사용할 수 있습니다 .