the*_*Fox 2 unix linux bash shell
使用for循环打印目录中列出的所有文件和文件数量的最佳方法是什么?这样做有更好的办法吗?
#!/bin/bash
target="/home/personal/scripts/07_22_13/ford/$1"
for file in "$target"/*
do
printf "%s\n" "$file" | cut -d"/" -f8
done
Run Code Online (Sandbox Code Playgroud)
这是一个解决方案:
#!/bin/bash
target="/home/personal/scripts/07_22_13/ford/$1"
let count=0
for f in "$target"/*
do
echo $(basename $f)
let count=count+1
done
echo ""
echo "Count: $count"
Run Code Online (Sandbox Code Playgroud)
如果您不想处理仅获取文件名的路径,另一种解决方案是cd进入相关目录,开展业务,然后cd回到原来的位置:
#!/bin/bash
target="/home/personal/scripts/07_22_13/ford/$1"
pushd "$target" > /dev/null
let count=0
for f in *
do
echo $f
let count=count+1
done
popd
echo ""
echo "Count: $count"
Run Code Online (Sandbox Code Playgroud)
该pushd和popd命令将切换到一个目录,然后返回。