2010-09-06 3 views
1

У меня есть сценарий, который мне нужно запустить на большом количестве файлов с расширением **. Tar.gz *.uncompressing большое количество файлов на лету

Вместо того, чтобы разжать их, а затем запустить сценарий, я хочу, чтобы их можно было распаковать при выполнении этой команды, а затем работать с несжатой папкой, все с одной командой.

Я думаю, что это хорошее решение для этого, но я не использовал его раньше. Как мне это сделать?

ответ

1

В -v заказах tar печатать имена файлов, как он извлекает каждый файл:

tar -xzvf file.tar.gz | xargs -I {} -d\\n myscript "{}" 

Таким образом, сценарий будет содержать команды для решения одного файла, переданного в качестве параметра (спасибо xargs) к вашему сценарию ($1 в контексте сценария).

Редактировать: часть -I {} -d\\n будет работать с пробелами в именах файлов.

+0

-c и -z? и нет аргументов для -f? – strager

+0

@strager жаль, что я исправил, что – aularon

+0

'-v' предоставит вам список каждого расширенного файла. @sfactor хотел, чтобы его сценарий «работал в несжатой папке», предположительно, для каждого из файлов '* .tar.gz' (которые вам нужно добавить в команду' tar'). – Johnsyweb

0

Вы можете использовать цикл:

for file in *.tar.gz; do tar -xf "$file"; your commands here; done 

или расширяемый:

for file in *.tar.gz; do 
    tar -xf "$file" 
    # your commands here 
done 
+2

, если вы не указываете $ file, это не удастся для любых имен файлов, содержащих пробелы. –

+0

@static_rtti, Это зло! Но ты прав; Благодарю. – strager

1

Следующие три строки Баша ...

for archive in *.tar.gz; do 
    tar zxvf "${archive}" 2>&1 | sed -e 's!x \([^/]*\)/.*!\1!' | sort -u | xargs some_script.sh 
done 

... Переберет каждый gzipped tarball в текущем каталоге, распаковывать его, захватывать самые популярные каталоги распакованного содержимого и передавать их как аргументы до somescript.sh. Это, вероятно, использует больше труб, чем вы ожидали, но, похоже, делает то, о чем вы просите.

N.B: tar xf может принимать только один файл за вызов.

Смежные вопросы