Я хочу взять все файлы из текущего каталога и дать им для "расположений", чтобы проверить, в другом месте ли они. Таким образом, я запустил с
find -maxdepth 1 -type f -name "libd*" -exec locate {} ';'
Но это не работает, потому что находят возвраты именами в форме как "./libdrm.so" и располагаются, не работает с ведущей точкой. Таким образом, я думал, располагаются,-b должен помочь:
find -maxdepth 1 -type f -name "libd*" -exec locate -b {} ';'
К сожалению, найдите,-b./libdrm.so не работает, я рассматриваю это как ошибку. Таким образом, я попробовал его базовым именем:
find -maxdepth 1 -type f -name "libd*" -exec locate \`basename {}\` ';'
Это не работает также, потому что 'базовое имя {}' разрешено сначала, и результат "-должностное лицо располагается '{}'''";.
Какая-либо идея, как я могу передать, "определяет местоположение 'базового имени {}'" должностному лицу?
Так как Вы только хотите искать файлы в фактической папке, Вы также могли использовать
locate libd*
или что-то как следующим образом, но не имеете большого смысла.
ls libd* | xargs locate
locate $(ls libd*)
, Если бы Вы хотите использовать, находят, Вы также могли бы использовать *
вместо .
, но я также заключил бы в кавычки {}
.
find * -maxdepth 1 -name "libd*" -exec locate "{}" ';'
Наконец, если Вы хотите включать точечные файлы, иначе скрытые файлы с шариком.
shopt -s dotglob
find * -maxdepth 1 -name "libd*" -exec locate "{}" ';'
shopt -u dotglob
Я предложил бы или
find . -maxdepth 1 -name "libd*" -exec sh -c 'for f; do locate "${f##*/}"; done' sh {} +
или
find . -maxdepth 1 -name "libd*" -printf '%f\0' | while read -rd '' f; do locate "$f"; done
Это работает на меня:
find -maxdepth 1 -type f -name "libd*" | sed -r 's/^\.\///' | xargs locate
sed -r 's/^\.\///'
: удаляет ./
из find
команда
find -maxdepth 1 -name "libd*" | sed 's^\./^^' | locate -
Это решение наверняка не изящно, но оно работает на меня, †“sed 's^\./^^'
просто удаляет “./” с начала каждой строки.
, Если Вы хотите использовать, несколько управляют в -exec
, делают это этот путь:
find -maxdepth 1 -name "libd*" -exec bash -c 'basename $1 | locate -' {} \;