Вы можете сделать это одним из нескольких способов:
tar cvf../something.tar $( find -name "*.txt")
Это сделает так, что файлы будут помещены в something.tar
в каталоге прямо выше.
Это более длинный -извилистый путь:
tar cvf /path/to/something.tar $( find -name "*.txt")
При этом используется прямой путь к тому месту, куда вы хотите поместить файл .tar
.
Если вы хотите фактическое сжатие:
tar cvfz something.tar.gz $( find -name "*.txt")
z
поместит его в .gz
архив.
По сути, вы хотите использовать cvf
или cfvz
, так как c
будет сжимать содержимое в настоящий архив. Использование t
как в вашей команде tvf
означает отправку содержимого архива на стандартный вывод без его извлечения, что не сработает, поскольку вы еще не создали архив .tar
.
Вам также может понадобиться выйти из *
в зависимости от вашей среды:
tar cvf../something.tar $( find -name "\*.txt")
Еще одно обновление для тех, кому это может понадобиться в будущем:
Для всех, кто хочет использовать это, если у вас не установлен findutils
, необходимо будет включить путь, который вы ищете, до -name
в команде поиска:
tar cvf../something.tar $( find. -name "\*.txt")
tar cvf../something.tar $( find /path/to/directory -name "\*.txt")
Первый ищет в текущем каталоге, а второй ищет, используя путь к каталогу.
Эта информация доступна с помощью systemd --version
внизу. Когда вы запустите его, вы увидите что-то вроде
systemd 247 (247.1-3+deb11u1)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid
Здесь вам нужен вариант default-hierarchy=hybrid
(, который скоро изменится)