Nano Hash - криптовалюты, майнинг, программирование

Удаление файлов с одинаковым использованием сценария оболочки

Я совершенно новичок в сценарии оболочки. Мне нужно сравнить имя файла в двух каталогах и удалить файлы с таким же именем.

EG:

Directory1/
one
two
three
four

Directory2/
two
four
five

После запуска скрипта каталоги будут:

Directory1/
one
three

Diretory2/
five

Спасибо

24.11.2011

  • Я пробовал diff Directory1/Directory2/, но он показывает мне отдельные файлы в каждом каталоге, а не дубликаты файлов. 25.11.2011
  • Вам просто нужно удалить файлы с таким же именем? Разные файлы могут иметь одинаковые имена. Правильным подходом было бы использовать cksum или md5, чтобы определить, действительно ли файлы являются дубликатами. 25.11.2011
  • только такое же имя все в порядке. содержание его не важно в моем случае. спасибо 25.11.2011

Ответы:


1

test -f проверяет, существует ли файл:

cd dir1
for file in *
do
    test -f ../dir2/$file && rm $file ../dir2/$file
done
cd ..
25.11.2011

2

Быстро и грязно:

while read fname
do 
    rm -vf Directory{1,2}/"$fname"
done < <(sort 
              <(cd Directory1/ && ls) 
              <(cd Directory2/ && ls) | 
         uniq -d)

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

Тоже проверено, сейчас:

mkdir /tmp/stacko && cd /tmp/stacko
mkdir Directory{1,2}
touch Directory1/{one,two,three,four} Directory2/{two,four,five}

Выполнение команды показывает:

removed `Directory1/four'
removed `Directory2/four'
removed `Directory1/two'
removed `Directory2/two'

И полученное дерево:

Directory1/one
Directory1/three

Directory2/five
24.11.2011
  • почему в два раза меньше, чем используется ‹ ‹ ? 25.11.2011
  • < означает перенаправление ввода, <(cmd) означает подстановку процесса (открыть вывод команды как файл (дескриптор)); < <(cmd) поэтому перенаправляет ввод из псевдофайла (конвейера), представляющего выходные данные cmd. 25.11.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..