Не мог перейти через каталоги с помощью сценария удара

Через сценарий я не могу измениться в каталоги и перечислить файлы. cd не работает.

Вот мой сценарий

#!/bin/bash

export HOME=/home/yesh

DIR_START=2
DIR_END=`wc -l < ${HOME}/conf/DirectoryList`

while [ ${DIR_START} -le ${DIR_END} ];
do
        DIR1=`cat /home/yesh/conf/DirectoryList | sed -ne ${DIR_START}p`
        echo "cd ${HOME}/${DIR1}"
        find . -type f > /home/yesh/Files_"$(date +%Y%d%m)".log
done


DirectoryList
/home/yesh/yesh.txt
/home/yesh/Yesh
/home/yesh/BACKUP
/home/yesh/venv3
/home/yesh/pythonfund

Вышеупомянутое является списком каталогов, в которых я должен перейти через ${HOME}/conf/DirectoryList

0
задан 11 July 2018 в 09:07

1 ответ

Если бы список каталогов не является слишком большим, я предложил бы избежать цикла оболочки в целом и просто передать список find через массив:

mapfile -t dirs < "${HOME}/conf/DirectoryList"
find "${dirs[@]}" -type f > /home/yesh/Files_"$(date +%Y%d%m)".log

Если Вы все еще хотите использовать цикл оболочки вместо этого, то

while read -r dir; do
  find "$dir" -type f
done < "${HOME}/conf/DirectoryList" > /home/yesh/Files_"$(date +%Y%d%m)".log

Если намерение Вашего cd должен был удалить ведущие компоненты контура из вывода, затем можно сделать это в find путем замены печати по умолчанию явным -printf '%P\n'

0
ответ дан 28 October 2019 в 09:08

Другие вопросы по тегам:

Похожие вопросы: