LINUX.ORG.RU

Скрипт на баш


0

0

Как написать скрипт на bash, который бы смотрел файлы в двух каталогах, и если в обоих каталогах есть хотя бы один одинаковый файл, то он что-либо допустим печатал?


печатает список файлов с совпадающими названиями:

ls dir1 dir2 | sort | awk '$0 == prev { print } { prev=$0 }'

dilmah ★★★★★
()

Мало-мало башизм:

fgrep -xf <(ls -A dir1) <(ls -A dir2) > /dev/null && echo YES

это просто проверка на одинаковые имена (в данном случае отправляется
в /dev/null, но можно и как-то обработать, если нужно и совпадение
по содержимому)

io ★★
()
Ответ на: комментарий от dilmah

Спасибо, еще вопрос: я пытался сделать так, что мы в цикле идем по списку файлов в первом каталоге, а в этом цикле еще один цикл, в котором мы идем по списку файлов во втором каталоге, и сравнивая имена файлов filename1 и filename2 я таким образом определял одинаковость имен, но в filename1 и filename2 кладется не только имя файла, но и весь путь к нему, можно ли как-нибудь удалить все, что находится до последнего слэша, включая его, то есть оставить только само имя файла?

Sabik
() автор топика
Ответ на: комментарий от Sabik

Следующая конструкция на баш проверяет наличие некоторых недопустимых символов во втором параметре

if [ "`echo "$2" | sed -n /[\+\=\?\~\*]/p`" != "" ] then echo "Incorrect file's name" exit 1 fi

Как ее перенести на csh (не считая очевидных вещей вроде замены fi на endif и т.д.)

Sabik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.