1

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

Я пытаюсь переместить все файлы, которые находятся в каталогах на один уровень ниже корня, в корень. Например:

  • Корень есть: /volume3
  • Отдельный файл в подпапке: /volume3/20110103/20110103.log
  • Файл должен заканчиваться как: /volume3/20110103.log

Я знаю, как довольно легко сплющить всю структуру, но это условная часть, которую я не могу понять, как это сделать. Кто-нибудь может помочь?

1 ответ1

1

Вы можете сделать это с помощью небольшого сценария оболочки.

#!/usr/bin/env bash
# go to "root" folder
cd /volume3
# loop over all items in "root" folder
for item in "$( ls )" ;
do
    # if it's a folder
    if [ -d "$item" ] ; then
        # and only contains a single item
        if [ "$( ls "$item" | wc -l )" = "1" ] ; then
            # move all files in the folder to the "root" folder
            mv "$item/"* .
        fi
    fi
done

(не проверено, но не проблема, так как здравомыслящие люди всегда сохраняют резервные копии)

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