Что Linux эквивалентен из DOS “dir/s/b имя файла”?

Можно передать tar по каналу через ssh сессию:

$ tar czf - <files> | ssh user@host "cd /wherever && tar xvzf -"
17
09.02.2011, 22:00
4 ответа

Прямой эквивалент

find . -iname <filename>

который перечислит все файлы и названные каталоги <filename> в текущем каталоге и любых подкаталогах, игнорируя регистр.

Если Ваша версия находки не поддерживает -iname, можно использовать -name вместо этого. Отметьте это, в отличие от этого, -iname, -name чувствительно к регистру.

Если Вы только хотите перечислить названные файлы <filename>, и не каталоги, добавить -type f

find . -iname <filename> -type f

Если Вы хотите использовать подстановочные знаки, необходимо поместить кавычки вокруг этого, например.

find . -iname "*.txt" -type f

иначе оболочка развернет его.

Как другие указали, можно также сделать:

find . | grep "\.txt$"

grep распечатает строки на основе регулярных выражений, которые более мощны, чем подстановочные знаки, но имеют другой синтаксис.

Посмотрите man find и man grep для получения дополнительной информации.

28
27.01.2020, 19:46
  • 1
    Если <filename> содержит подстановочные знаки, используйте кавычки вокруг этого, например. find . -name '*.txt'. –  Gilles 'SO- stop being evil' 10.02.2011, 01:03
  • 2
    @Gilles, обновленный мой ответ для высказывания этого, спасибо. положительная сторона –  Mikel 10.02.2011, 06:32
  • 3
    Используя <filename> поскольку маркером для userinput является дурная привычка в среде командной строки, где < and > большую часть времени имейте определенное значение. Я предлагаю просто использовать filename, возможно, ИМЯ ФАЙЛА для подчеркивания этого. Большинство людей поймет, и те, кто не будет, мог бы нанести ущерб, если не поняв, что они, как предполагается, не совершают нападки меньше или больше - чем знак. обратные галочки –  user unknown 10.02.2011, 10:25
  • 4
    <filename> конвенция в большом количестве документации UNIX, таким образом, я думаю, что для людей полезно знать о нем, но я соглашаюсь FILENAME могло бы быть легче понять. –  Mikel 10.02.2011, 12:48
  • 5
    find -iname <filename> лучше, так как это нечувствительно к регистру как DOS –  Agnel Kurian 16.02.2014, 19:18

Некоторые оболочки позволяют ls **/filename, который довольно удобен.

8
27.01.2020, 19:46
  • 1
    . В последних версиях удара, работая shopt -s globstar; echo **/filename эквивалентно find . -name "filename". Это также работает в zsh. –  Mikel 10.02.2011, 06:41
  • 2
    Это 'ls **/filename' прекрасно, но кажется не, идут больше что один уровень каталога глубоко. –  Sopalajo de Arrierez 13.04.2014, 02:14
  • 3
    @sopalajo-de-arrierez, Если Вы делаете shopt -s globstar, это будет, вероятно, работать на Вас. Рекурсивный globbing является функцией, которая доступна только в некоторых оболочках, и иногда, это не находится на по умолчанию. –  Shawn J. Goff 13.04.2014, 06:39
  • 4
    ... Я понимаю теперь, @ShawnJ.Goff: shopt команда включает опцию globstar on. Теперь это работает как очарование.Большое спасибо. –  Sopalajo de Arrierez 13.04.2014, 15:05

Можно сделать это с

find . | egrep filename
4
27.01.2020, 19:46
  • 1
    Вы могли также сделать это в одном с find . -regextype posix-egrep -regex '.*filename.*' (Я не знаю если egrep часть важна, но Вы использовали egrep в Вашем ответе, таким образом, я включал его) –  Michael Mrozek♦ 09.02.2011, 22:29
  • 2
    Вы можете, но grep отличается, чем эквивалентная команда DOS. grep регулярные выражения использования, в то время как команда DOS использует подстановочные знаки оболочки. –  Mikel 09.02.2011, 22:36
  • 3
    Задумайтесь о нем, окружите шарики, также отличаются, чем подстановочные знаки DOS. Например, find . -name "*.*" не сделает то, что Вы ожидали бы от фона DOS. Шарики достаточно близки, чтобы быть распознаваемыми, тем не менее, в то время как regexes являются совершенно новым зверем. –  Jander 10.02.2011, 10:14
  • 4
    Что делает *.*.* в современной DOS т.е. окнах cmd? Что относительно *.*.*.*? –  ctrl-alt-delor 30.06.2016, 11:30

Это также может быть: tree -if или 'pwd' как путь

0
27.01.2020, 19:46

Теги

Похожие вопросы