[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Как можно собрать файлы из множества директорий в одну ?



On 2010.02.03 17:58, Alexander GQ Gerasiov wrote:
> Wed, 13 Jan 2010 11:53:31 +0200
> Oleksandr Gavenko<gavenko@bifit.com.ua>  wrote:
>
>> On 2010.01.12 16:23, Nicholas wrote:
>>   >  Oleksandr Gavenko wrote:
>>   >>  find $dir -type f -name "*.[ch]" | while read file; do \
>>   >>  fname=`basename $file` или fname=${file##*/}; \
>>   >>  dname=${file%/*}; \ - удаляем имя
>>   >>  dname=${dname##*/}; \ - получаем последний каталог
>>   >>  mv $file куда-вам-угодно/$dname_$fname; \
>>   >>  done
>>   >
>>   >  Спасибо, буду эксперементировать.
>>   >
>>
>> Приятность конструкции
>>
>> find . -type f .... | while read; do ...; done
>>
>> в возможности обрабатывать только часть файлов,
>> удовлетворяющих сложному условию:
>>
>> find . -type f .... | while read; do \
>>      if test/grep/[ $var = bad ]/bla-bla-bla; then \
>>          continue; \
>>      fi; \
>>      полезная-работа; \
>> done
>>
>> и полное соответствие POSIX (без лишних зависимостей).
> И радостное бл******** на перво же файле с \n в имени.
>
Есть такое. Ранний UNIX это set of text oriented utils.
Строка - единица в обработке информации.

К именам файлов наверно нужно подходить как к
индексам БД - нужны лишь для различия одного от другого.

Когда появился код для обработки wildcard - стало возможным
пихать теги имена в файлов (*.c, *.txt, *.tex). Эта концепция
хорошо ложится в придуманую модель именования файлов.

Но вот когда пользователям дали возможность ставить пробелы,
национальные символы, управляющие символы - никто не
заботился о совместимости со старым кодом и стандартами ((

Эти "тупые" пользователи ничего не знают о кодировках,
переносимости, спецсимволах. Не читали "limits.h",
где написан MAX_PATH. И вообще

http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_230

In the shell command language,
a word consisting solely of underscores, digits,
and alphabetics from the portable character set.
The first character of a name is not a digit.

PS. Обожаю пробелы, ведь благодаря им можно узнать столько
нового о shell и IFS.

--
С уважением, Александр Гавенко.


Reply to: