Как я могу рекурсивно искать имена каталогов с определенной строкой, где строка является только частью имени каталога

Другие ответы показывают, что лучше создать новый файл с отсутствием первой строки. Если вы хотите отредактировать файл, а не создавать новый файл, я уверен, что ed будет быстрее, потому что он не должен создавать новый файл вообще. Но вы должны искать, как удалить строку с ed, потому что я использовал ее только один раз.

61
задан 19 June 2012 в 22:31

23 ответа

Вы можете направить вывод на grep, чтобы он выделял имя каталога. Кое-что вроде

find / -type d | grep "directory name"

/ указывает на поиск по всему компьютеру

4
ответ дан 25 July 2018 в 18:25

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью в null device , а этот - в стандартных потоках для получения дополнительной информации.

13
ответ дан 25 July 2018 в 18:25

Легкий способ сделать это - использовать find | egrep string. Если слишком много ударов, используйте флаг -type d для поиска. Запустите команду в начале дерева каталогов, которое вы хотите выполнить, или вам нужно будет указать каталог как аргумент find.

Другой способ сделать это - использовать ls -laR | egrep ^d.

И команда locate также пригодится: locate string

3
ответ дан 25 July 2018 в 18:25

Вы можете направить вывод на grep, чтобы он выделял имя каталога. Кое-что вроде

find / -type d | grep "directory name"

/ указывает на поиск по всему компьютеру

4
ответ дан 31 July 2018 в 10:28

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью в null device , а этот - в стандартных потоках для получения дополнительной информации.

14
ответ дан 31 July 2018 в 10:28

Легкий способ сделать это - использовать find | egrep string. Если слишком много ударов, используйте флаг -type d для поиска. Запустите команду в начале дерева каталогов, которое вы хотите выполнить, или вам нужно будет указать каталог как аргумент find.

Другой способ сделать это - использовать ls -laR | egrep ^d.

И команда locate также пригодится: locate string

72
ответ дан 31 July 2018 в 10:28

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью в null device , а этот - в стандартных потоках для получения дополнительной информации.

14
ответ дан 2 August 2018 в 00:36

Вы можете направить вывод на grep, чтобы он выделял имя каталога. Кое-что вроде

find / -type d | grep "directory name"

/ указывает на поиск по всему компьютеру

4
ответ дан 2 August 2018 в 00:36

Легкий способ сделать это - использовать find | egrep string. Если слишком много ударов, используйте флаг -type d для поиска. Запустите команду в начале дерева каталогов, которое вы хотите выполнить, или вам нужно будет указать каталог как аргумент find.

Другой способ сделать это - использовать ls -laR | egrep ^d.

И команда locate также пригодится: locate string

73
ответ дан 4 August 2018 в 16:07

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью в null device , а этот - в стандартных потоках для получения дополнительной информации.

14
ответ дан 4 August 2018 в 16:07

Вы можете направить вывод на grep, чтобы он выделял имя каталога. Кое-что вроде

find / -type d | grep "directory name"

/ указывает на поиск по всему компьютеру

4
ответ дан 4 August 2018 в 16:07

Вы можете направить вывод на grep, чтобы он выделял имя каталога. Кое-что вроде

find / -type d | grep "directory name"

/ указывает на поиск по всему компьютеру

4
ответ дан 6 August 2018 в 00:45

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью в null device , а этот - в стандартных потоках для получения дополнительной информации.

14
ответ дан 6 August 2018 в 00:45

Легкий способ сделать это - использовать find | egrep string. Если слишком много ударов, используйте флаг -type d для поиска. Запустите команду в начале дерева каталогов, которое вы хотите выполнить, или вам нужно будет указать каталог как аргумент find.

Другой способ сделать это - использовать ls -laR | egrep ^d.

И команда locate также пригодится: locate string

73
ответ дан 6 August 2018 в 00:45

Легкий способ сделать это - использовать find | egrep string. Если слишком много ударов, используйте флаг -type d для поиска. Запустите команду в начале дерева каталогов, которое вы хотите выполнить, или вам нужно будет указать каталог как аргумент find.

Другой способ сделать это - использовать ls -laR | egrep ^d.

И команда locate также пригодится: locate string

74
ответ дан 7 August 2018 в 18:10

Вы можете направить вывод на grep, чтобы он выделял имя каталога. Кое-что вроде

find / -type d | grep "directory name"

/ указывает на поиск по всему компьютеру

4
ответ дан 7 August 2018 в 18:10

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью в null device , а этот - в стандартных потоках для получения дополнительной информации.

14
ответ дан 7 August 2018 в 18:10

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью в null device , а этот - в стандартных потоках для получения дополнительной информации.

14
ответ дан 10 August 2018 в 06:56

Вы можете направить вывод на grep, чтобы он выделял имя каталога. Кое-что вроде

find / -type d | grep "directory name"

/ указывает на поиск по всему компьютеру

4
ответ дан 10 August 2018 в 06:56

Легкий способ сделать это - использовать find | egrep string. Если слишком много ударов, используйте флаг -type d для поиска. Запустите команду в начале дерева каталогов, которое вы хотите выполнить, или вам нужно будет указать каталог как аргумент find.

Другой способ сделать это - использовать ls -laR | egrep ^d.

И команда locate также пригодится: locate string

74
ответ дан 15 August 2018 в 18:53
  • 1
  • 2
    @ Kuzuch (через некоторое время!): Вы можете использовать отрицательный grep, прокладывая поиск sinf в похвалу, как: find & lt; whatever & gt; | grep -v "/ proc" который будет отфильтровывать все строки , содержащие строку поиска. – Juan Lanus 8 October 2015 в 19:06

Чтобы избежать всех результатов «Отказано в разрешении», вы можете использовать:

find / -type d -name "*99966*" -print 2>/dev/null

См. эту статью в null device , а этот - в стандартных потоках для получения дополнительной информации.

14
ответ дан 15 August 2018 в 18:53

Вы можете направить вывод на grep, чтобы он выделял имя каталога. Кое-что вроде

find / -type d | grep "directory name"

/ указывает на поиск по всему компьютеру

4
ответ дан 15 August 2018 в 18:53

Вы можете использовать команду find:

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

Пример:

find ~ -type d -name "*99966*" -print

должен найти все каталоги (-type d), начиная с вашего домашнего каталога (~), которые имеют свои имена, содержащие строку «99966» (-name "*99966*") и выводят их (-print).

74
ответ дан 18 August 2018 в 21:43
  • 1
    Как я могу исключить определенный каталог из поиска? Мне нужно искать /, но я получаю тонны / proc результатов, которые меня не волнуют. – Kozuch 27 October 2014 в 17:52
  • 2
    @ Kuzuch (через некоторое время!): Вы можете использовать отрицательный grep, прокладывая поиск sinf в похвалу, как: find & lt; whatever & gt; | grep -v "/ proc" который будет отфильтровывать все строки , содержащие строку поиска. – Juan Lanus 8 October 2015 в 19:06

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

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