Eran
спасибо я использую этот код привязки события
this._form.bind('submit', Delegate.create(this, function(e) {
e.preventDefault();
this._searchFadeOut();
this.__onFormSubmit.invoke(this, new ZD.Core.GenericEventArgs(this._dateField.attr('value')));
});
, но существует прежней версии onclick
код HTML, и я предпочел бы не изменять его, поскольку существует именно так много ссылок.
Используйте read
:
while read F ; do
echo $F
done </tmp/filelist.txt
В качестве альтернативы используйте IFS, чтобы изменить способ разделения списка оболочкой:
OLDIFS=$IFS
IFS="
"
for F in $(cat /tmp/filelist.txt) ; do
echo $F
done
IFS=$OLDIFS
В качестве альтернативы (как предлагает @tangens) преобразовать тело ваш цикл в отдельный сценарий, затем используйте параметр -exec find
для запуска if для каждого найденного файла напрямую.
Вы можете сделать это без временного файла, используя подстановку процесса:
while read F
do
...
done < <(find . -type f -mtime +15)
использовать при чтении
echo $FILE | while read line
do
echo $line
done
Вы можете перенаправить вместо эха
Вы можете использовать параметр -exec
в find
и напрямую использовать имена файлов:
find . -type f -mtime +15 -exec <your command here> {} \;
{}
является заполнителем для имени файла.
направьте вашу команду поиска прямо в цикл while read
find . -type f -mtime +15 | while read -r line
do
printf "do something with $line\n"
done
Я считаю, что вы можете полностью пропустить временный файл и просто перебирать результаты поиска, то есть:
for F in $(find . -type f -mtime +15) ; do
...
done;
Нет гарантий, что мой синтаксис верен, но я почти уверен, что концепция работает .
Изменить: если вам действительно нужно обработать файл со списком имен файлов и вы не можете просто объединить команды, как я сделал выше, то вы можете изменить значение переменной IFS
- -it означает внутренний разделитель полей - для изменения способа определения полей в bash. По умолчанию это пробел, поэтому новая строка, пробел или табуляция будут начинать новое поле. Если вы установите его так, чтобы он содержал только новую строку, вы можете перебирать файл так же, как и раньше.
Я ни в коем случае не являюсь экспертом по bash (обычно я пишу свой скрипт на ruby или python для кроссплатформенности), но я бы использовал выражение регулярного выражения, чтобы избежать пробелов в каждой строке перед обработкой.
Для Bash Regex: http://www.linuxjournal.com/node/1006996
В аналогичной ситуации в Ruby (обработка файла csv и очистка каждой строки перед его использованием):
File.foreach(csv_file_name) do |line|
clean_line = line.gsub(/( )/, '\ ')
#this finds the space in your file name and escapes it
#do more stuff here
end