Как использовать 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,

Другие вопросы по тегам