Поскольку, когда Вы используете sudo bash
, bash
не не действует как оболочка входа в систему. Попробуйте еще раз с sudo bash -l
и необходимо видеть тот же результат как su -
.
Если это корректно, то различие в PATH
находится в конфигурационных файлах: /etc/profile
, ~/.bash_profile
, ~/.bash_login
, ~/.profile
выполняются (в том порядке) для оболочки входа в систему, в то время как ~/.bashrc
выполняется для невхода в систему интерактивная оболочка.
Это перечислит весь PDFs:
$ find dir/ -name '*.pdf'
./dir/subdir2/subsubdir1/document.pdf
./dir/subdir3/another-document.pdf
Можно передать это по каналу к xargs
получить его как разграниченную одиночным пробелом строку и канал это к tar
создать архив:
$ find dir/ -name '*.pdf' | xargs tar czf dir.tar.gz
(Этот путь опускает пустые каталоги),
С ударом ≥4 или zsh и tar GNU:
tar -czf dir.tar.gz dir/**/*.pdf
Это не могло бы работать, если у Вас есть очень большое количество файлов PDF, и командная строка является слишком длинной. Затем Вам была бы нужна более сложная находка - базирующееся решение (снова, с помощью tar GNU):
tar -cf dir.tar -T /dev/null
find dir -name '*.pdf' -exec tar -rf dir.tar {} +
gzip dir.tar
Кроме того (и портативно) можно создать архив с миром.
pax -w -x ustar -s '/\.pdf$/&/' -s '/.*//' . | gzip >dir.tar.gz
Первое -s
говорит для включения всех .pdf
файлы, не меняя их имя. Второе -s
говорит для переименования всех других файлов к пустому названию, которое на самом деле означает не включать их в архив.
**
; Я даже не понял, что удар 4 имел это теперь
– Michael Mrozek♦
10.01.2011, 22:34
find docs \( -iname '*.pdf' -o -iname '*.mp3' \) -printf '"%p"\n' | xargs tar czf docs-media.tar.gz
– Matt Alexander 10.01.2011, 22:26\'"
(отказ xargs), и не будет работать, если будет слишком много имен файлов (отказ ядра). – Gilles 'SO- stop being evil' 10.01.2011, 22:29-printf '"%p"\n'
часть заботится о том (по крайней мере, она сделала для меня). – Matt Alexander 10.01.2011, 22:31