MyTetra Share
Делитесь знаниями!
Пример перебора файлов с именами, содержащими пробелы, на Bash
Время создания: 08.08.2019 19:08
Текстовые метки: bash, имя, файл, директория, пробел, перебор
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1565280491ma7nwe54rw/text.html на raw.github.com

Ниже дан пример скрипта, который перебирает *.jpg-файлы в текущей директории и переименовывает их сквозной нумерацией. Скрипт корректно обрабатывает файлы с именами, в которых присутствуют пробелы:



#!/bin/bash


n=1


ls -1 *.jpg | while read file

do


echo "Обрабатывается файл: $file"

numName=$(printf %03d $n)


mv -f "$file" $numName.jpg

n=$(($n+1))

done



Следует учитывать, что данный метод может некорректно работать в случае, если пробелы будут в начале или в конце имени файла. Он корректно работает только, если пробелы находяться именно в середине имен файлов.


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



IFS=$'\n'; for i in $(find $dir -depth -name '* *'); do mv $i $(dirname $i)/$(basename $i| tr ' ' '_'); done



Этот скрипт обсуждается здесь:



https://www.linux.org.ru/forum/development/2978980?cid=2979090



Не совсем понятно, для чего создается переменная IFS, которая в других примерах по даннной ссылке называется как FS. Но команда работает.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования