Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Русскоязычное Linux-сообщество ([info]lj_ru_linux)
@ 2014-11-06 19:07:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
[решено] Bash, touch и пробелы в именах
Люди добрые, кто ещё не спит, помогите с башем.
Как нужно подавать параметр touch, чтобы оно съедало имена файлов с пробелами? Хочу синхронизировать даты между двумя директориями, вот так:

#!/bin/bash

orig=/home/user/test1
copy=/home/user/test2

for i in $(find $orig)
do
        file=`echo $i | sed s@^$orig@$copy@`
        touch -r "$i" "$file"
done


А получается вот что:

user@host:~> mkdir test1
user@host:~> mkdir test2
user@host:~> echo "12 34" > "test1/12 34"
user@host:~> echo "12 34" > "test2/12 34"
user@host:~> vi test.sh
user@host:~> ./test.sh 
touch: failed to get attributes of ‘/home/user/test1/12’: No such file or directory
touch: failed to get attributes of ‘34’: No such file or directory


Я уже и так, и эдак, и в кавычках ему, и в фигурных скобках - не нравится ему. Что делать?

UPD
Да, дело было не в touch. Это for делил строки. IFS=$'\n' помогло
Спасибо


(Читать комментарии) (Добавить комментарий)