Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash-打印目录文件_Linux_Bash_Shell_Unix - Fatal编程技术网

Linux Bash-打印目录文件

Linux Bash-打印目录文件,linux,bash,shell,unix,Linux,Bash,Shell,Unix,使用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 以下是一个解决方案: #!/bin/bash target="/home/personal/scripts/07_22_13/ford/$1

使用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
以下是一个解决方案:

#!/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"
解决方案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"
pushd
popd
命令将切换到一个目录,然后返回

target="/home/personal/scripts/07_22_13/ford/$1"
for f in "$target"/*; do
    basename "$f"
done | awk 'END { printf("File count: %d", NR); } NF=NF'

basename“$f”
将自动在其自己的行上输出每个文件名,awk代码将打印处理的记录总数,在这种情况下是列出的文件数。此外,由于末尾的
NF=NF
模式,awk将自动打印文件名。我想说学习awk是有好处的,如图所示。:-)

请注意,脚本不知道
$HOME
变量,因此必须使用
/HOME…
。是否有一种方法不必包含整个路径?这肯定会让用户更轻松@fedorquiMmm也许您可以定义一个初始路径结构,如
path=/home/this\u user
,然后检查
$path/$directory
。到底是什么问题?你的剧本与主题中的问题有什么关系?走一棵树,所以你的问题是一个特例,应该由它来回答。你会用什么来格式化文件的输出,以便只看到文件名?我最终使用了cut,但你有什么建议吗?我想到了这个:awk-F'/'{print$8 |“sort”}我马上就来看看basename。我喜欢basename,我还想出了一些别的办法。您还可以执行以下操作:echo${f###*/}排序