Русскоязычное Linux-сообщество's Journal
 
[Most Recent Entries] [Calendar View]

Thursday, November 6th, 2014

    Time Event
    7:07p
    [решено] 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' помогло
    Спасибо

    << Previous Day 2014/11/06
    [Calendar]
    Next Day >>

Русскоязычное Linux-сообщество   About LJ.Rossia.org