Bash-打印目录文件

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)

Hai*_* Vu 5

这是一个解决方案:

#!/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)

解决方案2

如果您不想处理仅获取文件名的路径,另一种解决方案是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)

pushdpopd命令将切换到一个目录,然后返回。