Я хочу найти папки по их имени, которые я знаю, и это распространено среди таких папок. я использовал «найти» команду в Баш скрипт, как этотКак удалить первую и последнюю папку в результатах поиска «Найти»?
find . -type d -name "*.hg"
это просто распечатать весь путь от текущего каталога самой найденной папки. имя foldr имеет «.hg». Затем я попытался использовать команду «sed», но я не мог адресовать последнюю часть пути. Я решил, что имя папки заканчивается на .hg, сохраните ее в переменной, а затем используйте команду «sed», чтобы удалить последний каталог из вывода. Я использую это, чтобы получить последнюю часть, и попытаюсь сохранить результат в переменную, не повезло.
find . -type d -name "*.hg"|sed 's/*.hg$/ /'
find . -type d -name "*.hg"|awk -F/ '{print $NF}
это просто распечатать имена файлов, вот папка с .hg в конце. тогда я использовать другой подход
for i in $(find . -type d -name '*.hg');
do
$DIR = $(dirname ${i})
echo $DIR
done
это didin't работать ни. может ли кто-нибудь указать мне какой-либо намек на то, чтобы это сработало. и да, это домашнее задание.
Я использовал ваш код и применил к своей работе, как этот $ j для i в $ (find. -type d -name '* .hg'); do \t $ j = "$ {i%/*}"; \t echo $ j; сделано; он показывает, что вывод я хотел, но с ошибкой: нет такого файла или каталога. – Pamador
Я хотел проголосовать за @eugene, но моя репутация низкая. Я тоже использовал этот код: find. -type d -name '* .hg' | xargs sed 's/*. hg $// g'. но показал мне ошибку. \. \ .. test.hg - это каталог. действительно * .hg - это папка – Pamador
@Pamador: '$ j =" $ {i% /} "' неверно, вы хотите 'j =" $ {i% /} "' –