Bash Shell 递归文件夹
Bash Shell recursive folder
我想递归浏览我的文件夹并打印出 folders/files。
此代码应该有效,但它仅适用于第一个文件夹。然后它停止没有错误。
#!/bin/bash
dateiDurchsuchen() {
DATEIEN=($(ls -d /*))
for(( i=0;i<${#DATEIEN[*]};i++ ))
do
echo ${#DATEIEN[*]}
ELEMENT=${DATEIEN[$i]}
echo $ELEMENT
if [ -d $ELEMENT ]
then
dateiDurchsuchen $ELEMENT
fi
done
}
dateiDurchsuchen $HOME
这个有效:
#!/bin/bash
dateiDurchsuchen() {
DATEIEN=($(ls /*))
for(( i=0;i<${#DATEIEN[*]};i++ ))
do
echo ${#DATEIEN[*]}
ELEMENT=${DATEIEN[$i]}
echo $ELEMENT
if [ -d $ELEMENT ]
then
dateiDurchsuchen $ELEMENT
fi
done
}
dateiDurchsuchen $HOME
发生这种情况是因为 bash 默认情况下变量是全局的。
您必须明确将它们标记为本地:
dateiDurchsuchen() {
local DATEIEN=( ""/* )
local i
for(( i=0;i<${#DATEIEN[@]};i++ ))
do
echo ${#DATEIEN[@]}
local ELEMENT=${DATEIEN[$i]}
echo "$ELEMENT"
if [ -d "$ELEMENT" ]
then
dateiDurchsuchen "$ELEMENT"
fi
done
}
dateiDurchsuchen "$HOME"
还要注意如何删除多余的 ls
以及引用的变量。这是处理带有特殊字符的文件名所必需的。
我想递归浏览我的文件夹并打印出 folders/files。 此代码应该有效,但它仅适用于第一个文件夹。然后它停止没有错误。
#!/bin/bash
dateiDurchsuchen() {
DATEIEN=($(ls -d /*))
for(( i=0;i<${#DATEIEN[*]};i++ ))
do
echo ${#DATEIEN[*]}
ELEMENT=${DATEIEN[$i]}
echo $ELEMENT
if [ -d $ELEMENT ]
then
dateiDurchsuchen $ELEMENT
fi
done
}
dateiDurchsuchen $HOME
这个有效:
#!/bin/bash
dateiDurchsuchen() {
DATEIEN=($(ls /*))
for(( i=0;i<${#DATEIEN[*]};i++ ))
do
echo ${#DATEIEN[*]}
ELEMENT=${DATEIEN[$i]}
echo $ELEMENT
if [ -d $ELEMENT ]
then
dateiDurchsuchen $ELEMENT
fi
done
}
dateiDurchsuchen $HOME
发生这种情况是因为 bash 默认情况下变量是全局的。
您必须明确将它们标记为本地:
dateiDurchsuchen() {
local DATEIEN=( ""/* )
local i
for(( i=0;i<${#DATEIEN[@]};i++ ))
do
echo ${#DATEIEN[@]}
local ELEMENT=${DATEIEN[$i]}
echo "$ELEMENT"
if [ -d "$ELEMENT" ]
then
dateiDurchsuchen "$ELEMENT"
fi
done
}
dateiDurchsuchen "$HOME"
还要注意如何删除多余的 ls
以及引用的变量。这是处理带有特殊字符的文件名所必需的。