Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ скрипт Shell

Автор: Тёмный Эльф 15.10.2007 2:51

Вопрос насчет команды find в командной строке Linux.
Например, если я ввожу find. -name "*a*" -exec rm {} \; , то удаляются все файлы, содержащие в своем название символ "a". А как сделать так, чтобы удалялись только те файлы, имена которых оканчиваются на символ "a"?

Автор: Malice 15.10.2007 2:54

find. -name "*a" -exec rm {} \; не прокатит ?

Автор: Тёмный Эльф 15.10.2007 3:15

Цитата(Malice @ 14.10.2007 23:54) *

find. -name "*a" -exec rm {} \; не прокатит ?


Хм. В этом случае ничего не удалилось.

Автор: klem4 15.10.2007 12:52

может быть надо каким-то образом указывать на конец строки ? как в регулярных выражениях php например "*a^" вроде smile.gif

Автор: xds 15.10.2007 13:51

Все должно работать:

Код
symbiot7@v51:~#find . -name "*a" -exec echo "Found: {}" \;
Found: ./htdocs/pma                                      
Found: ./htdocs/pma/contrib/packaging/Fedora              
find: ./bin: Permission denied                            
Found: ./tmp/sess_424fef7bc6e6ccab4f3ac26e5584799a        
Found: ./tmp/sess_34d01ee27efe191c57c7e01f882a735a        
Found: ./tmp/sess_7cfa12eda713fe97a1b64d77694623ea        
Found: ./copyarea                                        
symbiot7@v51:~#


Может ты не поставила пробел перед \; ? Что говорит sh?

Автор: Тёмный Эльф 15.10.2007 23:48

Вот когда я прописываю в исполняем файле sh так
find . -name "*a" -exec echo "Found: {}" \;
то он не находит ничего при этом не выдает никаких сообщений.
А когда я написала вместо "*a" вот так "*txt" то он нашел все текстовые файлы. Тогда я пришла к выводу, что он ищет расширения. То есть если я создам файл с именем file.a то он отобразит его. А вот файл aaa.txt уже нет. (хотя окончание на символ a)
Может, попробывать сделать это с помощью цикла? например пробегаем название файла пока символ не есть точка. Как только равен точка (дальше идет расширение) проверяем равен ли предыдущий символ нужному нам значению, и если да, отображаем его. Или это бред? dry.gif

З.Ы. "*a^" так тоже не находит. (даже если расширение файла оканчивается на a)

Автор: xds 16.10.2007 14:12

В POSIX нет расширений - все символы имени файла равноправны. Используй шаблон "*a.*".

Автор: Тёмный Эльф 18.10.2007 0:35

Цитата
Используй шаблон "*a.*"


О. умно)) Спасибо.

Автор: xds 18.10.2007 9:21

Цитата(Тёмный Эльф @ 18.10.2007 4:35) *

О. умно)) Спасибо.

На здоровье! smile.gif