Команда Bash для удаления определенного файла в * папки

Надеется быть открытая ошибка в RHEL относительно iptables.. Вы могли бы поражать его. https://bugzilla.redhat.com/show_bug.cgi? id=598380

Тем временем посмотрите на Вас что-то как denyhosts ? Это автоматически добавит записи в hosts.deny поскольку Вы подвергаетесь нападению (ssh нападения)

Просто мысль.

4
20.12.2018, 02:17
2 ответа

Решить Вашу исходную проблему:

find ~/'path to'/ -name SOFT_REPAIR -exec rm -f "{}" \;

или, если у Вас есть GNU find:

find ~/'path to'/ -name SOFT_REPAIR -delete

Отвечать на Ваши вопросы:

  • Вам нужны к Escape обратной косой черты пробелы в именах файлов, если Вы не переносите их в кавычки.
  • Нет, потому что кавычки предотвращают расширение шарика оболочки. Это должно работать, хотя:

    rm 'path to'/*/SOFT_REPAIR/
    

    принятие этого SOFT_REPAIR находится только два уровня ниже path to/

  • rm на несуществующем файле бросит ошибку. rm -f перестанет работать тихо (по крайней мере, в реализации GNU rm).

3
27.01.2020, 20:54
  • 1
    Удаление с find команда не бросит истерику если SOFT_REPAIR не существует, правильно? –  Oxwivi 16.02.2014, 15:07
  • 2
    Кроме того, будет find рекурсивно изучите подкаталоги, или я должен указать точно, где файл? Если это так, это побеждает цель, потому что ни я, ни .desktop файл будет знать последнюю версию программы и впоследствии названия папки с SOFT_REPAIR в нем. –  Oxwivi 16.02.2014, 15:15
  • 3
    @Oxwivi find не будет жаловаться. Это просто применяет действия к любым файлам, которые это находит. Кроме того, это работает рекурсивно. –  Joseph R. 16.02.2014, 15:17
  • 4
    Испытание его ответило на мой вопрос.Большое спасибо! –  Oxwivi 16.02.2014, 15:23

Да, это работает. Просто используйте rm -f path\ to/*/SOFT_REPAIR.

Но почему Вы просто не судите себя?

michas@lenny:~/t$ mkdir -p path\ to/{foo,bar}
michas@lenny:~/t$ touch path\ to/{foo,bar}/SOFT_REPAIR
michas@lenny:~/t$ tree
.
`-- path\ to
    |-- bar
    |   `-- SOFT_REPAIR
    `-- foo
        `-- SOFT_REPAIR

3 directories, 2 files
michas@lenny:~/t$ rm path\ to/*/SOFT_REPAIR
michas@lenny:~/t$ tree
.
`-- path\ to
    |-- bar
    `-- foo

3 directories, 0 files
michas@lenny:~/t$ rm path\ to/*/SOFT_REPAIR
rm: cannot remove 'path to/*/SOFT_REPAIR': No such file or directory
michas@lenny:~/t$ rm -f path\ to/*/SOFT_REPAIR
michas@lenny:~/t$ tree
.
`-- path\ to
    |-- bar
    `-- foo

3 directories, 0 files
2
27.01.2020, 20:54
  • 1
    К сожалению, альтернативное решение, предложенное @Joseph, удовлетворяет ситуации, которую я описал лучше.Прошу прощения! –  Oxwivi 17.02.2014, 17:39

Теги

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