다른 하위 디렉토리에 수천 개의 압축 된 텍스트 파일이 있으며 몇 년 전에 프로젝트의 입력으로 이러한 파일의 하위 집합을 사용했습니다. 당시에는 실제로 한 디렉토리에서 사용한 파일의 압축이 풀린 사본이 있었지만이를 삭제하고 압축 해제 된 파일 목록 만 해당 폴더에 보관했습니다.
이것은 내 초기 아이디어였습니다 LIST
. 파일 목록입니다. PARENTDIR
모든 파일이 다양한 하위 디렉토리에있는 최상위 디렉토리입니다. 아이디어는 모든 하위 디렉토리에서 모든 아카이브를 찾아서 압축합니다.NEWDIR
#!/usr/bin/env bash
LIST="listfile.txt"
PARENTDIR="/home/user/old/project"
NEWDIR="/home/user/old/project/2016"
while read line;
do
ARCHIVE="$(find $PARENTDIR -name "$line*")"
gunzip --stdout $ARCHIVE >$NEWDIR/$line
done <$LIST
find 명령이 올바르게 보이지 않는 것 같습니다. 변수없이 작동하지만 명령 대체를 호출하지 않아도 명령 행을 호출하지 않아도 작동합니다. 따옴표와 와일드 카드의 조합이 정확하지 않지만 올바르게 얻을 수 없으며 변수 확장이 도움이되지 않으며 붙어 있다고 생각합니다 ...
제안에 감사드립니다
—
Carambakaracho
echo "$ARCHIVE"
, 빈 줄을 출력하고 echo $line
내가 기대하는 것을 보여줍니다. 나는 포함 set +
되어 set -
있지만 아무것도 일어나지 않는 것 같았지만
@Hastur, 당신 말이 맞아, 내 테스트에 따르면 수천 개의 사본이 있지만 전부는 아닙니다. 원칙적으로 첫 번째 텍스트 파일을 두 번째 텍스트 파일로 덮어 쓸 수 있습니다
—
Carambakaracho
find... -exec gzip {} ;
. 아카이브를 두 번 압축 해제하면됩니까?
echo "$ARCHIVE"
발생한 부분을 확인하려면 디버깅 할 부분set +
전후에 추가 하십시오set -
. 사용하려는 공간이" $variable"
있는 경우 ... 키와 호환되는 둘 이상의 아카이브를 찾은 경우 어떻게됩니까? 더 나은find... -exec gzip {} ;