我目前有这段代码:
listing=$(find "$PWD")
fullnames=""
while read listing;
do
if [ -f "$listing" ]
then
path=`echo "$listing" | awk -F/ '{print $(NF)}'`
fullnames="$fullnames $path"
echo $fullnames
fi
done
出于某种原因,这个脚本无效,我认为这与我编写while循环/声明列表的方式有关。基本上,代码应该从find $ PWD中提取文件的实际名称,即blah.txt。
答案 0 :(得分:6)
read listing
未读取字符串listing
中的值;它使用从标准输入读取的行设置listing
的值。试试这个:
# Ignoring the possibility of file names that contain newlines
while read; do
[[ -f $REPLY ]] || continue
path=${REPLY##*/}
fullnames+=( $path )
echo "${fullnames[@]}"
done < <( find "$PWD" )
使用bash
4或更高版本,您可以使用
shopt -s globstar
for f in **/*; do
[[ -f $f ]] || continue
path+=( "$f" )
done
fullnames=${paths[@]##*/}