Linux-замена пробелов в именах файлов


У меня есть несколько файлов в папке, и я хочу заменить каждый символ пробела во всех именах файлов с подчеркиванием. Как я могу этого достичь?

10 70

10 ответов:

Это должно сделать это:

for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done

Я предпочитаю использовать команду 'rename', которая принимает регулярные выражения в стиле Perl:

rename "s/ /_/g" *

вы можете сделать сухой прогон с флагом-n:

rename -n "s/ /_/g" *

использовать sh...

for i in *' '*; do   mv "$i" `echo $i | sed -e 's/ /_/g'`; done

Если вы хотите попробовать это, прежде чем нажать на курок просто изменить mv to echo mv.

Что делать, если вы хотите применить заменить задание рекурсивно? Как бы ты это сделал?

Ну, я только что нашел ответ сам. Нет самого элегантного решения (пытается переименовать также файлы, которые не соответствуют условию), но работает. (Кстати, в моем случае мне нужно было переименовать файлы с "%20", а не с подчеркиванием)

#!/bin/bash
find . -type d | while read N
do
     (
           cd "$N"
           if test "$?" = "0"
           then
               for file in *; do mv "$file" ${file// /%20}; done
           fi
     )
done

Если вы используете bash:

for file in *; do mv "$file" ${file// /_}; done

цитата переменные:

for file in *; do echo mv "'$file'" "${file// /_}"; done

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

попробуйте что-то вроде этого, предполагая, что все ваши файлы были .тхт это:

for files in *.txt; do mv “$files” `echo $files | tr ‘ ‘ ‘_’`; done

Я считаю, что ваш ответ находится в замените пробелы в именах файлов подчеркиванием.

самый простой способ заменить строку (пробел в вашем случае) с другой строкой в Linux С помощью sed. Вы можете сделать это следующим образом

sed -i 's/\s/_/g' *

надеюсь, что это помогает.

переименовать все файлы с .py расширение использования, find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"

образца

$ find . -iname "*.py" -type f                                                     
./Sample File.py
./Sample/Sample File.py
$ find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"
$ find . -iname "*.py" -type f                                                     
./Sample/Sample_File.py
./Sample_File.py