Рейтинг:2

Как удалить каталоги с номерами в качестве имен файлов в Ubuntu с помощью командной строки?

флаг in

У меня есть каталог, в котором есть подкаталоги с номерами в качестве каталогов. Например, у меня есть родительский каталог тестовое задание теперь у меня есть несколько подкаталогов, например 1,2,3,4,5,6,7. Теперь у меня есть локальная экспортируемая переменная, например экспорт а=3. Я хочу удалить каталоги, которые больше или равно $a и ниже или равно $a+3, Итак, я хочу удалить файлы 4,5. Как я могу добиться этого в Убунту 18.04.6 ЛТС.

Я пытался rm -rf {$а..$($а+3)}, это не сработало, я пробовал так много других вещей, но не удалось.

David avatar
флаг cn
На самом деле не имеет ничего общего с ОС. Вопрос в том, как это сделать в скрипте или в командной строке.
Space Impact avatar
флаг in
@ Дэвид, где было бы правильно разместить это? Не могли бы вы предложить?
David avatar
флаг cn
Хорошо быть здесь, просто ясно, что это не проблема ОС. Команда или сценарий будут такими же в Linux.
mchid avatar
флаг bo
@David Вы могли бы сказать это почти о любом вопросе здесь. Если они используют Ubuntu, это должно быть по теме.
mchid avatar
флаг bo
Пожалуйста, укажите версию Ubuntu, которую вы используете. Спасибо.
Space Impact avatar
флаг in
@mchid добавил версию Ubuntu, которую я использую.
James S. avatar
флаг de
Скорее всего, вам повезет, если вы зададите этот вопрос в более общем месте, так как это не вопрос об Ubuntu. попробуйте: https://unix.stackexchange.com/
bac0n avatar
флаг cn
Вы можете использовать только целые или отдельные символы внутри выражения последовательности, раскрытие скобок выполняется перед любыми другими раскрытиями, не будет никакой интерпретации текста между фигурными скобками, а неправильно сформированное раскрытие скобок останется без изменений. Однако вы можете сделать `eval rm {$a..$((a+2))}`.
Рейтинг:2
флаг cn

Одно из возможных решений:

rm -r $(seq $a $((a+3)))

(При условии, что вы действительно имели в виду то, что проиллюстрировали своим примером кода, т.е. каталоги выше или равно и ниже или равно $а+3, вместо того, что вы написали в тексте, "выше >$3 но ниже <$3+2".

Space Impact avatar
флаг in
Это сработало, спасибо за ответ. Я отредактирую вопрос.
Space Impact avatar
флаг in
Как удалить все, что ниже или равно `$a-1`, но не знает наименьшего числа с каталогом?
Tilman avatar
флаг cn
Просто `rm -rf $(seq 1 $((a-1)))`. Он удалит существующие каталоги, а опция `-f` подавит сообщения об ошибках о несуществующих.
Рейтинг:0
флаг gb

Вы можете использовать следующий метод для удаления папок или файлов.

  1. Отправить вывод соответствующей папки в текстовый файл лс >> текст.txt

  2. Отредактируйте файл text.txt, чтобы удалить все те записи, которые вы не хотите удалять.

  3. дать команду sudo rm -r -i $(cat text.txt). Использовать флаг, если вы хотите, чтобы процесс был интерактивным.

  4. При удалении файлов не используйте флаг.

Этот метод будет работать, если папки, которые вы хотите удалить, расположены не в последовательном порядке.

Cyrus avatar
флаг cn
Вот тут у меня мурашки по коже. Обратите внимание: [Почему *не* анализировать `ls`?](http://unix.stackexchange.com/questions/128985/why-not-parse-ls)
AjayC avatar
флаг gb
Спасибо, я не думаю, что у меня достаточно навыков, чтобы полностью понять тонкости/проблемы с командой ```ls```, как описано в посте. Честно говоря, я еще не видел таких сложных имен файлов или каталогов.

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

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