Скопируйте файлы из папки, если они также находятся в другой папке

Учитывая, что folderA содержит эти файлы:

foo bar baz 

и папка B, содержащая:

 foo baz foobar qux 

Как я могу скопировать foo и baz из папкиA в новую папку C?
Обратите внимание, что я сравниваю только их имена, а не их содержимое.

  • Переменная Bash в html
  • Какова функция баш-шебанга?
  • Как я могу отредактировать мой скрипт bash для учета пробелов?
  • Многопоточная обработка / многопоточность в BASH
  • sed, как заменить, когда в строке есть «http: //»?
  • распечатать последнее поле из строки + альтернатива для awk
  • killall не работает, если я вызываю его из скрипта
  • История команды bash, редактирующая несколько строк
  • 2 Solutions collect form web for “Скопируйте файлы из папки, если они также находятся в другой папке”

    Используйте цикл for над файлами. Расширение параметров может использоваться для извлечения частей пути:

     #! /bin/bash for file in folderA/* ; do basename=${file##*/} if [[ -f folderB/$basename ]] ; then cp "$file" folderC/"$basename" fi done 

    Вы также можете перебирать файлы в папке B, и я бы рекомендовал, если папка содержит значительно меньше файлов, чем folderA.

    Это работает в моем bash:

     echo "Folder A" ls -l ./foldera/ echo "Folder B" ls -l ./folderb/ echo "Folder C" ls -l ./folderc/ read -p "Press any key to start" duplicates=( "$(find foldera folderb -type f -exec basename {} \; |sort |uniq -d)" ) for file in ${duplicates[@]}; do cp "./foldera/$file" "./folderc/$file" done echo "Script Finish. Folder C" ls -l ./folderc/ 

    Вывод:

     root@debian:# ./bashtest.sh Folder A total 32 -rw-r--r-- 1 root root 8230 Oct 14 01:36 abp.png -rwxr-xr-x 1 root root 8805 Dec 9 01:58 appslist.sh -rwxrwxrwx 1 root root 2682 Nov 14 02:50 cpu.sh -rw-r--r-- 1 root root 898 Oct 11 00:25 tkinter-3.py Folder B total 24 -rw-r--r-- 1 root root 8230 Oct 14 01:36 abp.png -rw-r--r-- 1 root root 898 Oct 11 00:25 tkinter-3.py -rwxr-xr-x 1 root root 595 Oct 28 00:02 yadlist.sh -rwxr-xr-x 1 root root 2455 Nov 16 01:24 yadnotebook.sh Folder C total 0 Press any key to start Script Finish. Folder C total 16 -rw-r--r-- 1 root root 8230 Dec 18 23:55 abp.png -rw-r--r-- 1 root root 898 Dec 18 23:55 tkinter-3.py 
    Interesting Posts

    ZeroCopy с использованием командной строки

    Записи Я могу безопасно исключить выполнение резервных копий

    Терминальный эмулятор с CTRL + Scroll Zoom

    Подключитесь к серийному, выпустите команду, прочитайте результат, запишите его и выйдите

    Запуск приложения в исходной рабочей области вместо текущей рабочей области

    Определите статус крышки ноутбука

    Как я могу передать вывод программы или функции в переменную?

    Как установить Linux на USB, который копирует себя в ОЗУ при загрузке, а затем снова сбрасывает измененные данные на USB при выключении?

    Linux – отображение или обновление обновлений безопасности только с использованием apt

    Проблема с шрифтами с Debian 8.2

    Проблема с максимизацией окон на расширенном рабочем столе (2 монитора)

    Плохо ли иметь тысячи правил autofs?

    Обертка Bash, которая будет форматировать вывод другой программы

    Как отключить автоматическое приостановление, когда я закрываю крышку ноутбука?

    Проблема с командой echo

    Linux и Unix - лучшая ОС в мире.