什麼是使用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