LINUX.ORG.RU

bash


0

0

Есть папка с кучей файлов. Надо эти файлы скормить скрипту. В названиях файлов есть пробелы и если делать

for fname in `ls /path/to/dir`; do ./script $fname ...

то в $fname будут лежать строки - куски названий файлов разделённых пробелами. Чё делать?

Т.е.
[code]
# ls /path/to/dir
Имя файла1
Имя файла2
# for fname in `ls /path/to/dir`; do ls $fname; done
Имя
файла1
Имя
файла2
[/code]

markevichus ★★★
() автор топика
Ответ на: комментарий от markevichus
$ find -maxdepth 1  -type f -exec ls {} \;
./hello world
./some
vga ★★
()
Ответ на: комментарий от CyberTribe

«»

В смысле, for fname in «`ls /path/to/dir`»? Не сработает.

Есть вот такое говнорешение:

for i in $(ls | sed -e 's/ /%SPACE%/g'); do i="`echo \"$i\" | sed -e 's/%SPACE%/ /g'`"; do_stuff $i; done
Hetor
()
edigaryev@brick ~/mydir $ for fname in *;do echo "$fname";done
a b c
d e f
g h i
edigaryev ★★★★★
()
Ответ на: комментарий от alg0rythm

Вроде должно помочь.

edigaryev@brick ~/mydir $ for i in `ls -Q`;do echo $i;done
"a
b
c"
"d
e
f"
"g
h
i"
edigaryev ★★★★★
()

Блин...скока каментов...
Сделал средствами perl-а. На нём скрипт накалякан.

markevichus ★★★
() автор топика

всё= всем спасибо.

markevichus ★★★
() автор топика
shopt -s nullglob
for fname in /path/to/dir/*
do
    ./script "$fname"
done
const86 ★★★★★
()

Чё делать?

сделал бы так, чтобы скрипту на вход подавался сразу список файлов. ./script /path/to/dir/*

name_no ★★
()
Ответ на: комментарий от name_no

> сделал бы так, чтобы скрипту на вход подавался сразу список файлов. ./script /path/to/dir/*

самое толковое решение в треде, кстати ;)

arsi ★★★★★
()

Ого, сколько упоротых лезут в тред про баш и пробелы. Троллям на заметку.

balodja ★★★
()
Ответ на: комментарий от markevichus

отписался, ведь, уже.

там возле ссылки «удалить» есть ссылка «[Отметить как решенную]»

name_no ★★
()

ls -A «/path/to/dir» | while IFS=«» read -r fname
do
./script $fname
done

Devix
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.