我需要识别具有不同扩展名的文件,即使存在多个扩展名的组合。
因此,如果我的cwd有以下文件:
file-1 .zip
file-2 .tar
file-3 .tar.gz
file-4 .gz
file-5 .zip.tar
file-6 .tar.gz
file-7 .gz我需要告诉bash当扩展(在本例中)是:
因为对于每个扩展,我需要做不同的事情,这意味着如果扩展是.tar (只)或.gz (只),我需要执行某些事情,但是如果扩展是.tar.gz,我需要运行另一个代码段。
示例:如果文件名有.tar扩展名,我需要这样做
# stuff
tar xf filename.tar
# other stuff如果文件名有.zip.tar扩展,我需要运行更复杂的代码(但代码并不完全依赖于扩展,我唯一的目标是获得文件名的完整扩展(filename.tar.gz应该返回.tar.gz而不是.gz或.tar)。
还有,有什么办法用木瓜吗?
发布于 2018-04-06 22:57:28
使用case
case "$filename" in
*.tar.gz) code for .tar.gz ;;
*.gz) code for .gz ;;
*.zip.tar) code for .zip.tar ;;
*.tar) code for .tar ;;
...
esac只需确保将组合的扩展放在它们包含的单个扩展之前,因为case执行匹配的第一个模式的语句。
发布于 2018-04-06 23:01:21
file命令是检测文件类型的一个很好的选项,然后可以编写一个逻辑。
file -i test.*
test.gz: application/x-gzip; charset=binary
test.tar: application/x-tar; charset=binary
test.tar.gz: application/x-gzip; charset=binary
test.zip: application/zip; charset=binaryhttps://stackoverflow.com/questions/49701986
复制相似问题