Как использовать locate для поиска родительской папки файла?
Например, у меня есть этот файл в этой папке
folder_x/folder_y/file1.txt
Я хочу сделать что-то вроде этого:
locate -xxxx file1.txt
и получить это
/folder_x/folder_y/
1 ответ
Решение
Вы можете использовать dirname, который извлекает имя родительской папки из полного имени файла.
Например, если это один файл,
dirname $(locate myuniquefile)
В случае нескольких ответов вы можете обработать каждую запись...
например, с помощью awk для сборки вашей команды и передачи вывода в оболочку bash.
locate \.mp3 | awk '{print "dirname \""$0"\""}' | /bin/bash
В современном bash вы можете использовать и другую конструкцию в качестве строки здесь:
/bin/bash <<< $(locate \.mp3 | awk '{print "dirname \""$0"\""}' )
Примечание: по соображениям безопасности ( троянские кони) рекомендуется использовать полный путь для вызова команд: так лучше /bin/bash
тогда просто bash
,