Как удалить структуру каталогов с помощью командной строки (или скрипта)

У меня есть большая коллекция файлов, упакованных в двухуровневую структуру каталогов со многими, многими и многими папками.

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

То, что я хотел бы сделать, – это переместить все файлы из этих подпапок в каталог, содержащий подпапки.

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

2 Solutions collect form web for “Как удалить структуру каталогов с помощью командной строки (или скрипта)”

С инструментами GNU:

cd that-dir && find . -mindepth 2 ! -type d -exec mv -it . {} + 

Перейдите в родительский каталог и запустите

 mv -- */* . 

( -- необходимо, только если есть подкаталоги, имя которых начинается с - )

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

 mv -- */* */.[!.]* */..?* . mv -- .[!.]*/* .[!.]*/.[!.]* .[!.]*/..?* . mv -- ..?*/* ..?*/.[!.]* ..?*/..?* . 

Убедитесь, что конфликтов нет, иначе последний файл, который вы перемещаете, будет автоматически перезаписывать ранее перенесенный файл с тем же именем. Передайте параметр -i в mv (т. mv -i */* . ) Для запроса в случае конфликта.

Затем вы можете удалить подкаталоги:

 rmdir */ 

Если вы получите сообщение о том, что в командной строке слишком много времени, вам придется сделать это несколькими шагами. Легкий способ заключается в команде find :

 find */ -type f -exec mv -i {} . \; 

или, немного быстрее:

 find */ -type f -exec sh -c 'mv -i -- "$@" "$0"' . {} + 

Еще быстрее, в не встроенной системе Linux:

 find . -mindepth 2 -type f -exec mv -it . {} + 
  • Задание аргумента команды `~ / bin / *` имена файлов из любого каталога в bash
  • Создать файл с определенным форматированием из содержимого каталога
  • Bash-скрипт, обнаруживающий изменение в файлах из каталога
  • Простая передача файлов
  • Как я могу выполнить операцию «копировать, если изменено»?
  • Как переименовать неназванные файлы с соответствующими расширениями?
  • Требование пароля для всех файлов с указанным расширением
  • Если файл переписан с тем же контентом, изменится ли время изменения?
  • Рекурсивная очистка всех папок и подпапок в папке, в которой нет файлов
  • Настройка приложения по умолчанию для типов файлов через CLI?
  • Как определить все файлы, созданные командой
  • Каталог доступа по дате изменения
  • Interesting Posts

    Как создать скрипт инициализации вместо служебного файла

    Rsync не перезаписывает файлы

    smbd сбой после выхода из системы или неудачная попытка входа в систему

    Основы оболочки Linux: как я могу проверить статус файловых дескрипторов, (где перенаправляются) прямо сейчас без lsof?

    Как я могу получить свой Mountain Lion Mac, чтобы Apache обслуживал контент на порту 80?

    Ubuntu 12.04 не загружается, запрашивает низкий графический режим, не работает apt-get, потому что файловая система доступна только для чтения

    входной поток файла для команды

    Вычислить хэширование bcrypt из командной строки

    FreeBSD 11 Скремблированная консоль

    Изображение PNG не отображается для значка рабочего стола на Fedora 16/17 с Gnome

    Полное дешифрование диска через DHCP

    "Tail -f | iconv -fsjis "ничего не выводит

    Правило udev не выполнено?

    Как печатать только уникальные совпадения из регулярного выражения?

    Звуковой выход от монитора Dell U2417HA не работает в Linux

    Linux и Unix - лучшая ОС в мире.