Я пытаюсь скомпилировать CyanogenMod, и в файлах поставщика мне нужно вручную найти те же файлы, а затем скопировать их. В папке более 400 файлов, и копировать их по одному очень сложно.
Я думал, есть ли способ выбрать общие файлы в обеих папках? Это сделает мою жизнь намного проще.
То, что Вы, вероятно, ищете:
rsync -a --existing source/ destination
Здесь, --existing
опция гарантирует, что только файлы, уже существующие в destination
, каталог копируется с source
, каталог
-a
делает копирование рекурсивным и сохраняет символьные ссылки, специальный & файлы устройств, время изменения, группа, владелец, и полномочия
, Если Вы хотите выполнить пробный прогон для наблюдения то, что будет скопировано, используют:
rsync -nav --existing source/ destination
В любом случае, уведомление там не является никакой наклонной чертой после определения целевого каталога.
На командной строке можно использовать команду MV и некоторые подстановочные знаки.
Перемещение все файлы в директорах subdirs к здесь
mv dir/*/* here
То же, но просто файлы, запускающиеся с префикса
mv dir/*/prefix* here
решение:
diff -sqr dir1 dir2 | grep identical | awk '{print $2}'
объяснение:
diff
может произвести различия именами файлов. Пример
diff -sqr dir1 dir2
Files dir1/fileX.txt and dir2/fileY.txt differ
Only in dir1: griveTest.txt
Files dir1/Test.odt and dir2/Test.odt are identical
для получения только идентичного использования файлов grep:
diff -sqr dir1 dir2 | grep identical
Files dir1/Test.odt and dir2/Test.odt are identical
теперь, чтобы только заставить использование имени файла awk
получать 2-й столбец:
diff -sqr dir1 dir2 | grep identical | awk '{print $2}'
dir1/Test.odt
Если необходимо найти те же файлы, Вы могли бы также посмотреть fdupes
и проанализировать его вывод. Это проверяет, действительно ли два (или больше) файлы, действительно то же, даже если у них нет того же имени файла.
можно объединить его с чем-то, что сравнивает имена файлов.
(Примечание стороны: Используя fdupes
для удаления избыточных файлов может быть опасным - например, с разорванными DVD. Каждая дорожка DVD имеет файл подзаголовка, и это - резервное копирование, которые идентичны, но имеют другой суффикс имени файла. Игрок VLC не будет играть DVD, если один из файлов будет отсутствовать. Таким образом, я должен восстановить эти файлы...)