Как заменить часть пути к файлу в цикле for ... in, используя сценарий оболочки для Unix? - PullRequest
0 голосов
/ 10 июля 2011

Нужна большая помощь.Я полностью застрял на этом.Я зацикливаю (рекурсивно) все файлы в каталоге и распечатываю список файлов.Что-то вроде:

# srcDir="input received from command line"
# tgtDir="input received from command line"

for listItem in `find ${srcDir}`
do
    if [[ -f ${listItem} ]]
    then
        echo ${listItem} # **** what to put here ****
    fi
done

При печати списка я хочу заменить путь файла от srcDir до tgtDir.Что-то вроде:

# let's assume that srcDir="/home/user"
# and tgtDir="/tmp/guest"
# srcDir has the following structure
file1.txt
dir1_1/file1a.txt
dir1_1/file1b.txt

# so the actual output of the script will be
/home/user/file1.txt
/home/user/dir1_1/file1a.txt
/home/user/dir1_1/file1b.txt

# but I want it to print as
/tmp/guest/file1.txt
/tmp/guest/dir1_1/file1a.txt
/tmp/guest/dir1_1/file1b.txt

Надеюсь, у вас есть идея.Пожалуйста, совет.

1 Ответ

1 голос
/ 10 июля 2011

Похоже на задание для операций с bash-строкой :

srcDir="/home/user"
tgtDir="/tmp/guest"
listItem="/home/user/file1.txt"
echo ${listItem/$srcDir/$tgtDir}
...