Как удалить часть имени папки

У меня есть список имен папок

file1xxx file2xxx file3xxx 

Я хочу удалить «xxx» с его имени. Я попробовал следующий bash

 for dirname in $(cat ${in}/all.txt); do # all.txt include the name of the folders in specific path ${in} [ -d "$dirname" ] || continue mv ${in}/$dirname ${in}/${dirname//.nii/} done 

но это не сработало! какие-либо предложения?

One Solution collect form web for “Как удалить часть имени папки”

В bash вы можете сделать:

 while IFS= read -r dir; do [[ -d $dir ]] && mv -i "$dir" "${dir%???}"; done <all.txt 

это будет читать файл all.txt по очереди и проверить, существует ли каталог, представленный линией, если это так, то переименование будет выполнено соответствующим образом.

РЕДАКТИРОВАТЬ :

Чтобы удалить только один символ, сделайте шаблон расширения параметра ${dir%???} ${dir%?} , Метасимволу ? представляет один символ в bash . Так :

 while IFS= read -r dir; do [[ -d $dir ]] && mv -i "$dir" "${dir%?}"; done <all.txt 
  • Проблема с использованием головы для удаления последней строки файла
  • Печать массива в файл с каждым элементом массива в новой строке в bash
  • Как установить сценарий для запуска новой строки, добавляется в конец файла?
  • Расширение шаблона bash прекращается через некоторое время
  • Bash: нажатие 4 раза
  • Какой bash расширит {1 .. $ VAR} так же, как zsh
  • Необходимо захватить stdout и изменить переменную по ссылке из функции в bash
  • Лучшая практика сценария BASH
  • как объединить ассоциативный массив bash в текстовый файл?
  • Поведение bash при удалении каталога, в котором вы находитесь
  • Когда я пытаюсь запустить комментарий, я получаю ошибку `Команда не может быть найдена, потому что '/ usr / bin' не входит в переменную среды PATH '
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.