簡體   English   中英

Bash-打印目錄文件

[英]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"

解決方案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"

pushdpopd命令將切換到目錄,然后返回。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM