Перемещение многих папок и файлов в их многочисленные родительские папки

Для тех, у кого такая же проблема:

Установка пакета ubiquity-frontend-gtk разрешила мои ошибки зависимостей, устанавливая драйверы принтера WFS-3520 рабочей силы Epson.

1
задан 17 December 2016 в 04:17

1 ответ

find folder* -name 'test' -exec mv {} {}/../.. \;

Объяснение

find folder* Поиск в любом ./folder* (шаблоны glob, расширенные оболочкой)

-name 'test' для файлов с именем test.

-exec mv {} {}/../.. \; Перемещает их на два уровня выше1. {} заменяется на найденное имя. Опция -exec должна быть завершена с помощью скелетной точки с запятой. Вы можете выполнить сухой пробег, добавив echo до mv.

1 Почему два уровня вверх? Если мы переместим папку в родительскую папку, мы попросим сделать ее вложенной папкой с ее текущей супер-папкой, поэтому она останется в текущем месте. Однако мы хотим переместить его, чтобы он стал подпапкой родителя родителя. Расширенная команда будет выглядеть как mv folder1/js/test folder1/js/test/../.., которая расширена до mv folder1/js/test folder1.

Примечание

Выполнение этой команды выдаст предупреждения типа:

find: ‘folder1/js/test’: No such file or directory
[d10 ], потому что он пытается выполнить поиск в этой папке после ее перемещения. Это можно отключить, указав 2> /dev/null.

2
ответ дан 23 May 2018 в 08:01
  • 1
    @Zanna Объяснение добавлено в ответ. Что происходит в вашем случае? – Melebius 19 July 2016 в 09:59
  • 2
    Объяснение ясно. И он работает, если цель - это каталог :) Приятно! – Zanna 19 July 2016 в 10:04

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

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