실제로 문자열은 new.tar.gz입니다. 이 파일이 tarball인지 확인하고 싶습니다.
답변1
file
명령어를 사용하여 확인해보세요.
$ file new.tar.gz
new.tar.gz: gzip compressed data, last modified: Tue Sep 26 16:50:00 2017, from Unix
압축된 파일의 내용을 검사하려면 압축을 풀고 file 을 실행해야 합니다.
$ gunzip -k new.tar.gz; file new.tar
new.tar: POSIX tar archive (GNU)
답변2
기술적으로 tar
아카이브 파일을 호출할 수 있습니다.아무것. Unix에서는 파일 이름이 파일의 형식이나 내용을 결정하지 않습니다.
$filename
그러나 변수 ether의 파일 이름이 .tar
문자열로 끝나는지 또는 문자열을 포함하는지 확인하는 것으로 문제를 제한하면 다음과 같습니다 .tar.
.
case $filename in
*.tar|*.tar.*) echo 'possibly a tar file' ;;
esac
위의 내용은 .tar
이름 끝에 또는 .tar
다른 확장자가 뒤에 올 수 있도록 허용합니다.
또는 bash
(위의 내용은 다음을 sh
포함한 모든 셸 에서 작동합니다 bash
):
if [[ $filename =~ \.tar$ ]] ||
[[ $filename =~ \.tar\. ]]; then
echo 'possibly a tar file'
fi
또는,
if [[ $filename == *.tar ]] ||
[[ $filename == *.tar.* ]]; then
echo 'possibly a tar file'
fi
파일에 긴 파일 이름 목록이 포함되어 있는 경우 다음 내용을 통해 파일 이름이 무엇인지 알 수 있습니다.파일의 줄.tar
문자열 로 끝나 거나 다음 문자열을 포함합니다 .tar.
.
grep -E '\.tar$|\.tar\.' file.list
이 -E
플래그는 grep
주어진 패턴을 확장된 정규식(처리용 |
)으로 처리하도록 지시합니다.
또는,
grep -e '\.tar$' -e '\.tar\.' file.list
목록결정적인긴 목록에 있는 각 파일의 확장자( 에 저장됨 file.list
):
sed 's/.*\.//' file.list
이 sed
표현식은 s/.*\.//
마지막 지점까지 각 줄의 모든 내용을 삭제합니다.