Рейтинг:2

Как найти одинаковые подпапки в двух папках только на первом уровне?

флаг cn

Сценарий:

  • 2 основные папки, в которых могут быть подпапки с одинаковыми именами (не знаю, какие имена могут дублироваться, вот и пытаюсь найти)
  • в подпапках есть МНОЖЕСТВО других файлов и подпапок, поэтому инструменты с автоматической рекурсией на самом деле не вариант
  • Меня интересуют только повторяющиеся имена подпапок на первом уровне двух основных папок.
  • содержимое подпапок не имеет значения
  • содержимое файлов не имеет значения

я пытался использовать слияние GUI, но для завершения этих структур требуется бесконечное время.

я пытался использовать diff --brief --report-identical-files папка1 папка2 но это в основном сообщает обо всем и даже не включает папки, поэтому я даже не могу | grep идентичен.

Я использую неправильные инструменты? Или есть какой-то трюк, который я не получил от разница --help ? Или я что-то не так делаю?

Спасибо

Рейтинг:5
флаг in

я бы использовал простой найти:

find "/path/to/main1" "/path/to/main2" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | сортировать | уникальный -d

Или сделать его нулевым, чтобы предотвратить проблемы с символами новой строки:

find "/path/to/main1" "/path/to/main2" -mindepth 1 -maxdepth 1 -type d -printf '%f\0' | сортировать -z | уникальный -zd | xargs -0
terdon avatar
флаг cn
@jave.web не копируйте: создайте новую папку, затем создайте символические ссылки на два целевых каталога в этой новой папке и используйте `find -L /path/to/new/folder -mindepth ....` (` -L` указывает `найти` для перехода по символическим ссылкам). Таким образом, вам не нужно дублировать данные.
jave.web avatar
флаг cn
Хорошо, после редактирования он работает именно так, как ожидалось. (Обратите внимание, если вы хотите, чтобы файлы были такими же, используйте `-type f` вместо `-type d`. @terdon спасибо за предложение, это, безусловно, тоже подход.
Рейтинг:1
флаг hr

С использованием зш, данный

% дерево dir1 dir2
директор1
ââ бар
âââ фу
    âââ баз
директор2
ââ бар
âââ баз
âââ баз

6 каталогов, 0 файлов

тогда

% a=( dir1/*(/ND:t) ) ; b=(каталог2/*(/ND:t))

создает массивы из тails (базовые имена) каталогов / в двух каталогах верхнего уровня директор1 и директор2Дотглоб и Нопции ullglob включены).

Тогда мы можем использовать расширение вида ${имя:*имя_массива} чтобы сохранить только те элементы, которые присутствуют в обоих массивах:

% печать -rC1 ${a:*b}
бар

Ответить или комментировать

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