Если вы пишете скрипты в Linux, утилита basename — ваш надёжный помощник. Её задача проста: извлекать имя файла из полного пути.
# basename /var/log/auth.log
auth.log
Также можно сразу убрать расширение файла:
# basename /var/log/auth.log .log
auth
Где это полезно? Например, нужно передать через
rsync только новые бэкапы:# rsync -av --files-from=<(ssh root@10.10.1.10 \
'/usr/bin/find /var/lib/pgpro/backup -type f -mtime -1 \
-exec basename {} \; | egrep -v timestamp') \
root@10.10.1.15:/var/lib/pgpro/backup/ /data/backup/
Сначала на удалённом сервере формируется список файлов через
find, имена очищаются basename, лишнее отсекается через egrep. Всё передаётся в rsync.Другой пример: смена расширений у всех
.txt файлов на .log:# for file in *.txt; do mv "$file" "$(basename "$file" .txt).log"; done
Это лишь один из множества способов.
Альтернативы:rename,findсxargs.
#linux #bash
🧑💻 NetworkAdmin | ⚙️ EasyTools