Это похоже на этот вопрос , но я хочу включить путь относительно текущего каталога в Unix. Если я сделаю следующее:
ls -LR | grep .txt
Это не включает полные пути. Например, у меня есть следующая структура каталогов:
test1/file.txt
test2/file1.txt
test2/file2.txt
Код выше вернет:
file.txt
file1.txt
file2.txt
Как я могу заставить его включать пути относительно текущего каталога, используя стандартные команды Unix?
find
илиtree
. Я ssh'ing в устройство Android, где у меня, кажется, только естьls
, и ни один из этих других инструментов: /Ответы:
Используйте find:
В системах, использующих GNU find, как и в большинстве дистрибутивов GNU / Linux, вы можете не указывать -print.
источник
find $(pwd) -name \*.txt
-path "*docs/*.txt"
вместо-name
.-wholename
такой же как-path
-type f
только для возврата файлов, а не каталогов, символических ссылок и т. Д.-name "*.txt"
НЕ будет соответствоватьfile.TXT
- всегда используйте-iname "*.txt"
вместо этого, который не зависит от регистра.Используйте
tree
с-f
(полный путь) и-i
(без отступов):Затем вы можете использовать,
grep
чтобы отфильтровать те, которые вы хотите.Если команда не найдена, вы можете установить ее:
Введите следующую команду для установки команды дерева в RHEL / CentOS и Fedora linux:
Если вы используете Debian / Ubuntu, введите в свой терминал Mint Linux следующую команду:
источник
Попробуй
find
. Вы можете посмотреть это точно на странице руководства, но это как-то так:find [start directory] -name [what to find]
так что для вашего примера
find . -name "*.txt"
должен дать вам то, что вы хотите.
источник
Вы можете использовать вместо поиска:
источник
Это делает трюк:
ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"
Но он делает это, «грешив» с помощью анализа
ls
, что считается сообществом GNU и Ghostscript дурным тоном.источник
ls
потому что это обычно приводит к ошибкам. Данное предложение пыталось это высказать. У этого также была шутка в этом, который я удалил.'sed' удалит 'your_path' из всех результатов 'find'. И вы получаете по пути «DIR».
источник
Чтобы получить действительные полные имена файлов нужных файлов с помощью команды find, используйте ее с командой pwd:
источник
Вот скрипт Perl:
использование:
источник
Вы можете создать функцию оболочки, например, в вашем
.zshrc
или.bashrc
:Первый будет работать только на отдельные файлы, очевидно.
источник
Найдите файл с именем «filename» в вашей файловой системе, начав поиск с корневого каталога «/». «Имя файла»
источник
Если вы хотите сохранить подробности, включите в вывод ls, например, размер файла и т. Д., Это должно сработать.
источник
В оболочке fish вы можете сделать это для рекурсивного перечисления всех PDF-файлов, в том числе в текущем каталоге:
Просто удалите «pdf», если вы хотите файлы любого типа.
источник
Вы можете реализовать эту функцию следующим образом.
Во-первых, с помощью команды ls, указывающей на целевой каталог. Позже с помощью команды find отфильтруйте результат. С вашего случая это звучит так - всегда имя файла начинается со слова
file***.txt
источник
В mycase, с командой дерева
Относительный путь
Абсолютный путь
источник