lundi 8 avril 2019

How to untar every type of tar file in a directory with bash script?

I'm a beginner in writing bash scripts for automating tasks, and I'm trying to untar all the tar files in one directory (there are way too many to do it by hand) for a bunch of source code files. They're all of the type *.tar.gz, *.tar.xz, or *.tar.bz2.

This is for a Linux from Scratch LFS installation I'm doing (I'm a first timer), and I'm not sure how else to automate this task other than using a bash script. The code for my little script to do this is down below.

#!/bin/bash
for afile in 'ls -1'; do
    if [ 'afile | grep \"\.tar\.gz\"' ];
    then
        tar -xzf afile
    elif [ 'afile | grep \"\.tar\.xz\"' ]
    then
        tar -xJf afile
    elif [ 'afile | grep \"\.tar\.xz\"' ]
    then
        tar -xjf afile
    else
        echo "Something is wrong with the program"
    fi
done;

I expected it to untar everything in the directory and create separate directories, but instead it exited with this error:

tar (child): afile: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

Apparently it thinks afile is the actual file, but I don't know how to change afile to be each file that is going through my for construct. How would I write a script for this, especially since there are different types of files?

Aucun commentaire:

Enregistrer un commentaire