什么是使用for循环打印目录中列出的所有文件和文件数目的最佳方法?有没有更好的做这个?Bash - 打印目录文件
#!/bin/bash
target="/home/personal/scripts/07_22_13/ford/$1"
for file in "$target"/*
do
printf "%s\n" "$file" | cut -d"/" -f8
done
什么是使用for循环打印目录中列出的所有文件和文件数目的最佳方法?有没有更好的做这个?Bash - 打印目录文件
#!/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"
如果你不想处理解析路径得到的只是文件名,另一种解决方案是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
命令将切换到一个目录,然后返回。
你会用什么格式化文件的输出来查看文件名?我最终使用剪切,但你会建议? – theGrayFox
查看我的更新:使用'basename' –
我想出了这个:awk -F'/''{print $ 8 | “sort”}'我会在一秒钟之内查看basename。 – theGrayFox
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代码将打印的处理的记录的总数,这是这种情况下是列出的文件的数目。此外,awk会自动打印文件名,因为最后的模式为NF=NF
。如所示,我会说学习awk会很有好处。 :-)
您是否经常需要打印并将目录(又名文件夹)的内容导出为PDF或HTML文件?借助Print Maestro,您可以浏览硬盘的目录结构,并将文件列表打印或导出为各种格式。通过“查看和点击”风格设计的直观图形界面,一切都可以快速轻松完成。
Print Maestro作为一款新颖优雅的打印目录解决方案,为您提供了让您的目录打印任务更轻松,更愉快的机会。打印您的文件夹结构或文件夹的实际内容;将它们转换为PDF文件或创建一个干净的HTML页面在网站上发布;只需点击一下即可完成。
注意,脚本不知道'$ HOME'变种,所以你必须使用'/家...'。 – fedorqui
有没有办法可能不必包括整个路径?这肯定会让用户更容易。 @fedorqui – theGrayFox
嗯,也许你可以定义一个像'path =/home/this_user'这样的初始路径结构,然后检查'$ path/$ directory'。 – fedorqui