Q
배쉬 잡는 디렉토리 이름은 내가, 예를 들면 각</p> <p>의 tar.gz 파일을 만들 directorys의 이름을 잡기 위해 시작과 함께 모든 directorys을 원하는 루프
-1
A
답변
2
이렇게하면 각 A*
디렉토리에 대한 tarball이 생성됩니다.
for dir in A*/; do
tar -cf "${dir%/}".tar.gz "$dir"
done
와일드 카드는 루프 오버 할 디렉토리 이름 목록으로 확장됩니다. 일치 항목을 디렉토리로 설정하는 후행 슬래시가 확장에 포함됩니다. 우리는 간단한 변수 치환 (${variable%suffix}
)이있는 경우 변수 값으로 끝까지 잘라내어 끝 부분에서 잘라내어 ${variable#prefix}
과 다른 많은 대체 문자를 사용하여 쉘 변수를 확장합니다 (쉘의 설명서 페이지 참조).
큰 따옴표는 공백이있는 파일 이름이없는 한 스크립트없이 작동합니다. 이것은 많은 쉘 스크립팅 자습서 에서조차 공통적 인 감독입니다.
1
당신이해야 할 일을 정확히 분명하지 않다, 그러나 여기에 구축하는 일부 비트 있습니다
: 특정 문자로 시작하는 모든 디렉토리를 찾을 수find -maxdepth 1 -type d
: 모든 디렉토리 찾아
가
find -maxdepth 1 -type d -name 'X*'
이제 첫 글자의 목록을 볼 수 있습니다.
for n in `find -maxdepth 1 -type d`; do echo ${n:2:1}; done | sort -u
마지막으로 해당 문자로 타르를 수행하십시오.
'find'를 사용하여 디렉토리를 가져 옵니까? – devnull
'for dir in * /;를 사용하여 디렉토리를 반복 할 수 있습니다. echo "$ dir"; done' –
"모든 디렉토리"란 무엇을 의미합니까? 파일 시스템의 모든 디렉토리? 특정 폴더의 모든 디렉토리? 특정 폴더 아래의 모든 디렉토리? – ruakh