최상위 디렉토리에서 각 하위 디렉토리를 입력하고 몇 개의 디렉토리를 만들고 하위 디렉토리의 각 파일에 명령을 실행 한 다음 이름을 바꾸고 이동하는 스크립트를 만들려고합니다. 파일들. 나는 수천 개의 디렉토리에서 실행되어야하기 때문에 디렉토리 나 다른 이름의 이름을주는 것과 같은 추가적인 입력없이이 작업을 수행해야합니다. 이것은 내가 정말 실제로 이해하지 못하는 내가 쓴 스크립트입니다 :하위 디렉토리를 반복적으로 이동하여 모든 파일에 대해 명령을 실행합니다.
#!/bin/bash
for path in ./*;
do
[ -d "${path}" ] || continue
dirname="$(basename "${path}")"
cd $path
mkdir stats
mkdir dir
files=(./*)
for f in "${files[@]}"
do
do stuff
done
cd dir
mkdir stats
mv *.trimmed_segments* stats/
rename '.fastq.trimmed' '.fastq' ./*
cd ..
mkdir raw
mv *.fastq raw/
mv trimmed/*.fastq ./
cd ..
done
그것은 이상하게도, 몇 하위 디렉토리에 제대로 작동하고 밖으로 프리츠와 펄에 대한 오류의 무리를 보내기 시작합니다 상당히 특이하지 않은 스크립트.
명령 자체는 괜찮습니다. 폴더에 들어가서 수동으로 입력해도 아무런 문제가 없으므로 올바른 변수를 던지는 데 문제가 있습니다. 내 실수를 볼 수 있다면 정말 고맙겠습니다.
오류가 perl에서 발생하는 경우 오류 및 스크립트 자체를 게시하는 것이 도움이됩니다. – Cfreak
스크립트는 solexaqa, solexaqa.pl 및 dynamictrim.pl에서 나는 충분히 구체적이지 않았습니다, 그들은 'do stuff'의 일부입니다. 오류는 매번 다르지만이 일반적인 프레임 워크에 속합니다. 해시 요소 (또는 초기화되지 않은 다른 값 사용)에서 초기화되지 않은 값 $ tile_number 사용. 그러나 오류는 필자가 펄에서 올바른 변수를 보내지 않는 스크립트에서 오는 펄에서 실제로 오지는 않는다. – user2472414
훨씬 간단한 스크립트! Simulans_next_gen/* CD의 난에 대한/빈/bash는 $ 내가 에서 mkdir이 펄 빈/SolexaQA_v.2.2/SolexaQA 트림 에서 mkdir Solexa_Stats.pl * -d Solexa_Stats; perl bin/SolexaQA_v.2.2/DynamicTrim.pl * .fq -d trimmed -sanger; done은 초기화되지 않은 변수가 다르더라도 동일한 문제가 있습니다. – user2472414