Bash скрипт удаляет файл внутри другой папки, если присутствует в обоих с расширением *. c - PullRequest
0 голосов
/ 01 мая 2020

Напишите сценарий оболочки, который удаляет все источники C в одном каталоге, если они находятся в структуре другого каталога. Первый аргумент в командной строке - это каталог, в котором находятся источники C, а второй - каталог, в котором начинается поиск.

Мне нужен полный код, если это возможно, потому что я написал это и это не работает для моей проблемы:

#!/bin/bash
if [ $# -ne 2 ]
then 
        echo "for execution complete the line of command: $0 dir1 dir2"
        exit 1
else 
        if [ ! d ~/$2 ]
        then
        echo "write a directory in order to do the search"
        exit 1
        fi
fi
for fis in *.c
do
        cat $fis
        rm -i $fis
done

Выше я попробовал выше.

1 Ответ

0 голосов
/ 01 мая 2020

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

find <second_directory> -type f -name *.c >list_of_files.txt

Затем вы пишете al oop, который проходит по первому каталогу и проверяет с помощью list_of_files.txt, присутствует ли файл там (используйте grep для this), удалите его.

Поскольку вы работаете с Linux (без корзины), я бы предложил записать имена файлов, которые должны быть удалены, во временный файл, и если это правильно, только тогда добавьте rm перед ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...