无法使用 Bash 脚本浏览目录

无法使用 Bash 脚本浏览目录

通过脚本我无法更改目录并列出文件。 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

答案1

如果目录列表不是太大,我建议完全避免使用 shell 循环,而只是find通过数组传递列表:

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

如果你仍然想使用 shell 循环,那么

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'

相关内容