Я хочу найти и заархивировать все мои скрипты, заканчивающиеся на .sh, поэтому я написал что-то вроде этого:
touch ~/archive.tar; find ~ -type f -name '*.sh' -exec rvf ~/archive.tar {} \;
Проблема в том, что после того, как я создам архив с именем archive.tar, архив не распакует файлы в текущий каталог, а в каталоги, из которых он был заархивирован. Например, может быть вызван архивный скрипт, ~/Desktop/wtf/delete.sh
но он будет извлечен в папку, wtf
а не в текущий каталог, где я сейчас нахожусь. Так как мне отредактировать мой скрипт find, чтобы все скрипты были в этом формате ./filename.sh?
решение1
Предполагая, что вы используете GNU tar
, вы можете сказать:
tar --transform 's/.*\///' -xzf archive.tgz
Это удалит из имен файлов все, вплоть до последнего слеша.