Извлечение файла.tar и создание списка файлов

У меня есть этот маленький код здесь

     for file in *.tar.gz;
     do tar xzvf "${file}" && rm "${file}";
     done

Он извлекает tar.gz и удаляет его. Теперь мне нужно создать файл списка файлов (.fl) с именем как подстрока из.tar. Например, я должен удалить первые 5 букв и последние 5 (расширение) из имени.tar.gz . И это для каждого.tar.gz, который я извлекаю.

Пример:

  • У меня есть ABC_A.tar.gz с ABC_A.xml в нем.
  • Я должен сделать A.fl и в этом A.fl я должен написать ABC_A.xml

Заранее спасибо.

2 ответа

Решение

В вашем цикле вы можете сделать следующее для каждого файла:

# delete first five characters
name=${file:5}

# delete .tar.gz suffix
name=${file%%.tar.gz}

Использование

for file in *.tar.gz
do
    # this creates the file list into a .fl file:
    tar tfz "${file}" > "${file:5:-5}.fl"
    # this extracts and afterwards removes the tar archive:
    tar xzvf "${file}" && rm "${file}"
done

Вы также можете объединить два в один шаг:

for file in *.tar.gz
do
    tar xzvf "${file}" > "${file:5:-5}.fl" && rm "${file}"
done
Другие вопросы по тегам