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

Код: 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
15.04.2007, 21:57:13
    #34462050
Ося
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mv не видит файлы с пробелами в имени
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
15.04.2007, 22:02:11
    #34462058
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mv не видит файлы с пробелами в имени
я бы проще делал - 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
15.04.2007, 22:09:12
    #34462063
Ося
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mv не видит файлы с пробелами в имени
--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
15.04.2007, 23:24:10
    #34462119
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mv не видит файлы с пробелами в имени
в условии задачи явно виден именно grep, $1 может быть регулярным выражением. Не могу поступиться функциональностью, так что пусть CPU напрягается
...
Рейтинг: 0 / 0
15.04.2007, 23:38:54
    #34462124
Ося
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mv не видит файлы с пробелами в имени
--null--в условии задачи явно виден именно grep, $1 может быть регулярным выражением. Не могу поступиться функциональностью, так что пусть CPU напрягается

нет, в условии задачи префикс и суффикс, ни по постановке, ни фактически регексп работать там не будет, спросим автора :)
...
Рейтинг: 0 / 0
16.04.2007, 01:18:29
    #34462166
Filth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mv не видит файлы с пробелами в имени
--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
16.04.2007, 01:19:37
    #34462167
Filth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mv не видит файлы с пробелами в имени
Ося 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
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / mv не видит файлы с пробелами в имени / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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