2014-09-14 2 views
2

Я пытаюсь найти файл tar, извлекать файлы и удалять все извлеченные файлы - я могу выполнить поиск и извлечение или найти файл и удалить его но я не могу объединить все три.найти * .tar затем извлечь и удалить файлы

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

find ~ -name '*.tar' | xargs tar -xf && rm -f 

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

+0

Вы хотите удалить извлеченные файлы или tarballs? –

+0

Спасибо всем за помощь. Я закончил работу: find -name 'file.tar' | xargs tar -xvf | xargs rm -f && rm 'file.tar' -f – CJ87

ответ

6

&& завершает трубопровод, он не является частью команды xargs.

Вы можете просто выполнить команды с помощью опции -exec в find:

find ~ -name '*.tar' -exec tar -xf {} \; -exec rm -f {} \; 
+0

Приятной особенностью этого подхода является то, что второй 'exec' выполняется только в том случае, если первый' exec' преуспел. Таким образом, это логически похоже на '&&' между командами. – John1024

1

Чтобы запустить две или несколько команд с xargs:

find ~ -name '*.tar' | xargs -I {} sh -c 'tar -xf {} && rm -f {}' 

только после того, как успешно распаковывать файл гудрон удаляется.

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