Нахождение всего.ODTs, архивирование их и обеспечение их на рабочий стол

Я хочу найти весь.ODTs в своем каталоге $HOME, архивировать их и принести zip-файл к рабочему столу. Путем выполнения find -type f -iname "*.odt", Я добираюсь:

./Programmierung/Hash bang.odt
./Schreibtisch/Alles/Tuberkulose/ Plan_tuberculose.odt
./Schreibtisch/Alles/Mirzanejad_Recueillement.odt
./Schreibtisch/Alles/Der Artikel/Ander/Déictiques de l'article.odt
./Schreibtisch/Alles/Der Artikel/Ander/Le plan.odt
./Schreibtisch/Alles/Der Artikel/Ander/Bibliographie.odt
./Schreibtisch/Alles/Geschrieben/corpus_historicité.odt
./Eifersucht/Ander/Le_plan_de_l'exposé_de_la_jalousie.odt
./Dokumente/Chant de guerre/Lieder/Bibliographie_Chants de guerre.odt
./Dokumente/Komparastik/Le_plan_de_Harriet.odt
./Dokumente/Komparastik/Harriet_Abji.odt

У меня есть 11 файлов, и я ожидаю иметь zip-файл, который содержит это 11 файлов, и затем переместите его в рабочий стол. Я делаю:

zip My_odts $(find -type f -iname "*.odt") && mv ~/My_odts.zip ~/Schreibtisch

[Schreibtisch=desktop]

Но содержание MY_odts.zip является тремя каталогами: рабочий стол, документы и каталог, который я создал (вместо всего моего ODTs), и в этом три каталога, я вижу некоторые свои ODTs и не всех их. Что я делаю неправильно? Я хочу иметь весь свой ODTs, и я не знаю, почему те каталоги находятся в моем zip-файле.

1
задан 10 July 2018 в 21:07

2 ответа

То, что Вы намереваетесь сделать, не должно сохранять структуру каталогов файлов в .zip (который не является поведением по умолчанию),

Но смотря на страницу справочника для zip, -p переключатель делает точно, что Вы хотите:

-j
--junk-paths
          Store just the name of a saved file (junk the path), and do  not
          store  directory names. By default, zip will store the full path
          (relative to the current directory).

Таким образом, Ваша исходная команда должна быть изменена следующим образом:

zip -j My_odts $(find -type f -iname "*.odt") && mv ~/My_odts.zip ~/Schreibtisch

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

zip -j ~/Schreibtisch/My_odts.zip $(find ~ -type f -iname "*.odt")
2
ответ дан 3 December 2019 в 06:51

Я хотел бы знать, возможно ли поместить все файлы в каталог (вместо того, чтобы архивировать их) и затем принести каталог к рабочему столу.

Вы верная банка. Используйте любой метод, Вы хотите скопировать их в целевой каталог, затем переместить каталог в ~ / Рабочий стол, или с Файловым менеджером GUI, или с командой оболочки

mv  -v ~/DIRECTORYWHEREVERTHEFILESARE/* ~/Desktop/

Так как файлы ODT уже сжаты до zip, это могло бы сохранить некоторое время обработки, и разница в размере между папкой, содержащей файлы ODT и zip-файлом файлов ODT, является небольшой.

Теперь, для создания папки под ~Desktop, названным местом назначения, затем ищите каждый файл под/, размещают и перемещают каждого, возможное решение было бы

cd ~/Desktop && mkdir destination && find ~/ -type f -iname  "*.odt" -exec mv {} ~/Desktop/destination \;
2
ответ дан 3 December 2019 в 06:51

Другие вопросы по тегам:

Похожие вопросы: