powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / mv не видит файлы с пробелами в имени
8 сообщений из 8, страница 1 из 1
mv не видит файлы с пробелами в имени
    #34461956
Filth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть задача переименовать файлы с задваемым в командной строке суффиксом путем добавления
также указываемого в командной строке префикса. Получился вот такой скрипт. Вся проблема, что
он не работает с файлами имеющими в своем названии пробелы... Как подправить чтобы он работал и с такими файлами?????? пробовал экранирование кавычками, но так и не получилось...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#!/bin/bash
# Переименование всех файлов с указанным суффиксом путем добавления 
# к ним заданного префикса.
 if [ $# -eq  0  ]; then 
  echo "Вы не ввели ни суффикс, ни префикс"
   elif [ $# -eq  1  -a "$1" != "?" ]; then 
    echo "Вы ввели только суффикс и не ввели префикс"
     elif [ $# -eq  2  ]; then  
      echo "Переименование файлов с указанным суффиксом "
 elif [ $# -gt  2  ]; then 
  echo "Неправильное количество аргументов"
 fi    
if [ "$1" = "?" ]; then 
 echo "Формат ввода: $0 суффикс префикс"
fi
counter= 0 
if [ $# -gt  1  ]; then   
for loop in `ls | grep $ 1  `
 do
 counter=`expr $counter +  1  ` 
  mv  $loop $ 2 $loop
 done 
 case $counter in 
  0 )  
  echo "Файлов с заданным суффиксом нет!!!"
  ;;
 *)
  echo "Файлы переименованы успешно!!!"
  ;;
 esac
fi
...
Рейтинг: 0 / 0
mv не видит файлы с пробелами в имени
    #34462050
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FilthЕсть задача переименовать файлы с задваемым в командной строке суффиксом путем добавления
также указываемого в командной строке префикса. Получился вот такой скрипт. Вся проблема, что
он не работает с файлами имеющими в своем названии пробелы... Как подправить чтобы он работал и с такими файлами?????? пробовал экранирование кавычками, но так и не получилось...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#!/bin/bash
# Переименование всех файлов с указанным суффиксом путем добавления 
# к ним заданного префикса.
 if [ $# -eq  0  ]; then 
  echo "Вы не ввели ни суффикс, ни префикс"
   elif [ $# -eq  1  -a "$1" != "?" ]; then 
    echo "Вы ввели только суффикс и не ввели префикс"
     elif [ $# -eq  2  ]; then  
      echo "Переименование файлов с указанным суффиксом "
 elif [ $# -gt  2  ]; then 
  echo "Неправильное количество аргументов"
 fi    
if [ "$1" = "?" ]; then 
 echo "Формат ввода: $0 суффикс префикс"
fi
counter= 0 
if [ $# -gt  1  ]; then   
for loop in `ls | grep $ 1  `
 do
 counter=`expr $counter +  1  ` 
  mv  $loop $ 2 $loop
 done 
 case $counter in 
  0 )  
  echo "Файлов с заданным суффиксом нет!!!"
  ;;
 *)
  echo "Файлы переименованы успешно!!!"
  ;;
 esac
fi


1.
Код: plaintext
ls -1b
2. нет проверки успешности mv
3. опрос входных параметров приличные люди делают через shift и параметры подают с ключами (т.е. без учета позиции)
4. про префикс к моменту mv успешно забыли
...
Рейтинг: 0 / 0
mv не видит файлы с пробелами в имени
    #34462058
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы проще делал - ls выбросил бы, половина проблем бы ушла

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for loop in *
do
 echo $loop | grep "$1" >/dev/null && {
  counter=`expr $counter +  1  `
  mv "$loop" AAA
 }
done

и все заработает
...
Рейтинг: 0 / 0
mv не видит файлы с пробелами в имени
    #34462063
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--я бы проще делал - ls выбросил бы, половина проблем бы ушла

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for loop in *
do
 echo $loop | grep "$1" >/dev/null && {
  counter=`expr $counter +  1  `
  mv "$loop" AAA
 }
done

и все заработает

а я бы выбросил grep, оставил ls и сэкономил бы CPU :)
...
Рейтинг: 0 / 0
mv не видит файлы с пробелами в имени
    #34462119
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в условии задачи явно виден именно grep, $1 может быть регулярным выражением. Не могу поступиться функциональностью, так что пусть CPU напрягается
...
Рейтинг: 0 / 0
mv не видит файлы с пробелами в имени
    #34462124
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--в условии задачи явно виден именно grep, $1 может быть регулярным выражением. Не могу поступиться функциональностью, так что пусть CPU напрягается

нет, в условии задачи префикс и суффикс, ни по постановке, ни фактически регексп работать там не будет, спросим автора :)
...
Рейтинг: 0 / 0
mv не видит файлы с пробелами в имени
    #34462166
Filth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--null--я бы проще делал - ls выбросил бы, половина проблем бы ушла

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for loop in *
do
 echo $loop | grep "$1" >/dev/null && {
  counter=`expr $counter +  1  `
  mv "$loop" AAA
 }
done

и все заработает


Спасибо огромное!!!
Вы мне очень помогли!!! Все действительно заработало!!!!
...
Рейтинг: 0 / 0
mv не видит файлы с пробелами в имени
    #34462167
Filth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ося FilthЕсть задача переименовать файлы с задваемым в командной строке суффиксом путем добавления
также указываемого в командной строке префикса. Получился вот такой скрипт. Вся проблема, что
он не работает с файлами имеющими в своем названии пробелы... Как подправить чтобы он работал и с такими файлами?????? пробовал экранирование кавычками, но так и не получилось...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#!/bin/bash
# Переименование всех файлов с указанным суффиксом путем добавления 
# к ним заданного префикса.
 if [ $# -eq  0  ]; then 
  echo "Вы не ввели ни суффикс, ни префикс"
   elif [ $# -eq  1  -a "$1" != "?" ]; then 
    echo "Вы ввели только суффикс и не ввели префикс"
     elif [ $# -eq  2  ]; then  
      echo "Переименование файлов с указанным суффиксом "
 elif [ $# -gt  2  ]; then 
  echo "Неправильное количество аргументов"
 fi    
if [ "$1" = "?" ]; then 
 echo "Формат ввода: $0 суффикс префикс"
fi
counter= 0 
if [ $# -gt  1  ]; then   
for loop in `ls | grep $ 1  `
 do
 counter=`expr $counter +  1  ` 
  mv  $loop $ 2 $loop
 done 
 case $counter in 
  0 )  
  echo "Файлов с заданным суффиксом нет!!!"
  ;;
 *)
  echo "Файлы переименованы успешно!!!"
  ;;
 esac
fi


1.
Код: plaintext
ls -1b
2. нет проверки успешности mv
3. опрос входных параметров приличные люди делают через shift и параметры подают с ключами (т.е. без учета позиции)
4. про префикс к моменту mv успешно забыли



Огромное спасибо за дельные указания!!!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / mv не видит файлы с пробелами в имени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]