Рейтинг:3

Как я могу удалить все файлы в папке с именами, которые длиннее X?

флаг ru

У меня есть папка с тысячами файлов с именами 23123 123r3883 3929388394j f38238d и т. д. Мне нужно удалить все файлы с длиной имени > 9. Как мне это сделать?

флаг hr
Это обязательно должен быть баш? В zsh есть несколько удобных квалификаторов glob для таких вещей.
флаг cn
пожалуйста, используйте Google.https://superuser.com/a/702461/276585 и нет, я не собираюсь красть там ответ Фосси: D
Рейтинг:4
флаг hr

Вы можете сопоставлять имена файлов, которые состоят не менее чем из 10 символов, используя простое выражение glob ??????????*. Итак, если количество файлов не слишком велико, вы можете использовать

эхо пм -- ????????????*

Для более длинных списков файлов вы можете разбить имена, используя xargs:

printf '%s\0' -- ??????????* | xargs -r0 эхо РМ

Если вы переключитесь с бить к зш, вы могли бы использовать квалификаторы глобуса для проверки длины каждого имени файла (передаваемого через ОТВЕТИТЬ переменная). Одним из преимуществ является то, что вы можете легко добавить другие квалификаторы, такие как Н (эквивалент оболочки bash nullglob) и . (что ограничивает результаты простыми файлами):

echo rm -- *(.Ne:'[[ $#REPLY -gt 9 ]]':)

или же

print -rNC1 -- *(.Ne:'[[ $#REPLY -gt 9 ]]':) | xargs -r0 эхо РМ

Чтобы сделать эквивалент в bash, вероятно, потребуется цикл, например

для f в *; делать
  [[ -f $f && $#f -gt 9 ]] && echo rm -- "$f"
сделано

Удалить эхо как только вы убедитесь, что правильные файлы сопоставляются.

pLumo avatar
флаг in
Или `find -maxdepth 1 -type f -name "?????????*" -delete`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.