1

Часто после загрузки и распаковки сжатой папки получается структура папок, подобная этой:

.
└── downloaded
    └── downloaded
        ├── a
        ├── b
        ├── c
        └── d

Я знаю, что могу просто сделать что-то похожее на mv downloaded/downloaded/* downloaded && rmdir downloaded/downloaded . Однако я помню, как однажды следовал учебному пособию, в котором автор использовал команду, назовем ее xyz , для перемещения содержимого downloaded/downloaded в downloaded и после этого удаления, downloaded/downloaded автоматически, например: xyz downloaded/downloaded .

Я просто забыл название команды, а также учебник, в котором я ее нашел. Это очень полезно, на мой взгляд, хотя.

У меня вопрос: вы знаете название команды?

Я наткнулся на несколько вопросов, где люди спрашивали, как переместить содержимое папки на один уровень, но ни на один из вопросов не было ответа, содержащего конкретную команду, которую я ищу.

1 ответ1

2
tar --remove-files -cC downloaded{,} | tar -x

(Это не так просто, как загруженный / загруженный вами пример xyz downloaded/downloaded но обратите внимание, что downloaded текст напечатан только один раз.)

Объяснение:

Сначала downloaded{,} расширяется с помощью bash до downloaded downloaded , поэтому команда эквивалентна:

tar -c --remove-files -C downloaded downloaded | tar -x

Значение в последовательности:

  • tar -c - создать архив…
  • --remove-files -… (но удалить файлы и каталоги после добавления)…
  • -C downloaded -… с рабочим каталогом, измененным на (внешний) downloaded ;
  • downloaded - добавить (внутренний) downloaded в архив;
  • | - затем передайте архив в ...
  • tar -x -… другой tar приказал извлечь его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .