[英]Bash - Printing Directory Files
使用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"
如果您不想處理僅獲取文件名的路徑,另一種解決方案是將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可能是有利的,如此處所示。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.