2

Мне нужно переместить два конкретных файла, мы назовем их fileA.txt и fileB.sh в его родительскую папку.

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

Иерархия папок выглядит следующим образом:Иерархия папок

Родительская папка уникальна и должна оставаться прежней. Всего в подпапках 200-300 родительских папок, содержащих дочерние папки, содержится более 2000 папок.

То, что я до сих пор, что в BASH это не работает, это:

find -maxdepth 4 -type f -name ‘*.bb’ ‘*.txt’; mv ../.

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

1 ответ1

3

Чтобы переместить любой файл с именем fileA.txt или fileB.txt в его непосредственный родительский каталог:

find . -maxdepth 4 -type f -name 'file[AB].txt' -execdir mv {} ../ \;

Или, чтобы переместить любой файл с именем fileA.txt или fileB.bb в его непосредственный родительский каталог:

find . -maxdepth 4 -type f \( -name 'fileA.txt' -o -name 'fileB.bb' \) -execdir mv {} ../ \;

Как это устроено

  • . говорит find для начала с текущей директорией. (Вы можете заменить это любым каталогом, который вам нравится.

  • -maxdepth 4 говорит, что find не должен опускаться более чем на четыре уровня вглубь структуры каталогов.

  • -type f указывает find искать только обычные файлы.

  • -name 'file[AB].txt' указывает, что find ищет только те файлы, которые соответствуют глобальному file[AB].txt .

    В качестве альтернативы, чтобы соответствовать либо fileA.txt или fileB.bb мы используем два -name испытания в сочетании с логическим или -o и сгруппированным вместе с круглыми скобками:

    \( -name 'fileA.txt' -o -name 'fileB.bb' \)
    
  • -execdir mv {} ../ \; говорит find chdir в каталог файла и выполнить команду оболочки mv {} ../ где find заменит {} на фактическое имя файла. Выражение ../ является Unix-говорят для родительского каталога. Трейлинг \; просто отметки для find конца команды оболочки

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