Создать имя каталога на основе других других каталогов

У меня есть каталоги:

  • Foo
  • плата

но у меня также есть несколько каталогов с именами вроде:

  • Ipsum – Lorem
  • Долор – Сидеть

Если каталог не содержит дефис, следует игнорировать. Если в каталоге есть дефис: Mkdir Ipsum; mv Ipsum \ – \ * Ipsum

Это возможно?

Измените для пояснения: если есть каталог с дефисом, я хочу создать новое имя каталога на основе предварительной дефисы части, а затем переместить ВСЕ каталоги, которые включают в себя предварительно дефисную часть в этот новый каталог.

2 Solutions collect form web for “Создать имя каталога на основе других других каталогов”

вы можете использовать функцию расширения подстроки bash.

$ {parameter %% word} Удалить соответствующий шаблон суффикса.

for f in *;do mv "$f" "${f%% -*}" done 

Да, это возможно. Вставьте такой код в файл, скажем, fix-dashes.sh (я нахожусь в Mac OS, но это должно работать на других Unices):

 #!/bin/bash SAVEIFS=$IFS IFS=$(echo -en "\n\b") trap 'IFS=$SAVEIFS' 0 for i in $@ do echo Processing $i case $i in *-*) echo "'$i' has a dash" destname=$(echo "$i" | sed 's/ -.*//') echo mv "$i" $destname mv "$i" $destname ;; esac done 

Затем bash fix-dash.sh */ переименует каталоги, как вы указали. Слэш важно, так что вы получите только имена каталогов, иначе будут затронуты обычные файлы с тире.

`IFS содержит разделители для слов, и поскольку ваши имена файлов имеют пробелы, которые вам нужно настроить.

Мне нравится использовать ограниченный механизм регулярных выражений, потому что он имитирует RE, используемые bash в командной строке. В этом случае только имена, содержащие тире, вызовут переименование.

Команда sed выполняет преобразование, в этом случае заменяя все после первого нулевой строкой.

  • Как эхо-переменные использовать cat в файл?
  • Поиск подстроки без учета регистра в скрипте оболочки
  • Выбирайте только каталоги и порядок с помощью эха
  • Как извлечь одну папку из большого архива tar.gz?
  • Регулярное выражение с использованием \\ vs с использованием \
  • Unix: как тестировать Ip-адрес разрешен для имен
  • Вопрос о shell и .profile, .bash_profile, .bashrc
  • Как распечатать сводку содержимого Maildir при входе в оболочку?
  • как переименовывать файлы во время копирования?
  • Какие ситуации существуют, когда переменные Bash не должны быть двойными кавычками?
  • Различные оболочки для интерактивной и неинтерактивной работы
  • Interesting Posts

    Что делает опция x для sed действительно при обмене данными между удержанием и буфером шаблонов?

    Ужасно не появляется в GDM?

    Скомпилировано, невозможно получить доступ к sudo

    Список всех пользователей и последний раз, когда они читают почту, переходят на несколько выходных данных

    Добавить круглые скобки вокруг чисел

    Как проверить, находится ли текущее время между 23:00 и 06:30

    Виртуальный файл, содержащий конкатенацию других файлов

    Несколько графических окон в одном (мультиплексор / оболочка окон приложений GUI)

    Как интерпретировать вывод safecopy

    Существуют ли программы Red Hat, но не Ubuntu?

    Как разрешить ошибку при загрузке, «Не удалось найти устройство с UUID …»

    Что такое высокая память и низкая память в Linux?

    Как регистрировать вывод в файл журнала с помощью runit

    Настройка приоритета демона службы init.d (с или без monit)

    Отсутствует файл init.d / apache2

    Linux и Unix - лучшая ОС в мире.