我想打印我選擇的目錄中的所有文件。我想格式化要顯示在列標題下的文件。但是當我試圖運行下面的代碼時,我在控制檯中收到錯誤。如何在BASH中創建以特定格式列出文件的FOR循環
list_files()
{
FILES=/home/student/.junkdir/
echo "Listing files in Junk Directory"
format="%8s%10s%10s $-s\n"
printf "$format" "Filename" "Size(Bytes)" "Type"
printf "$format" "--------" "-----------" "----"
for listed_file in $FILES; do
file_name=$(du $listed_file | awk '{print $2}')
file_size=$(du $listed_file | awk '{print $1}')
file_type=$(file $listed_file | cut -d ' ' -f2-)
printf "$format" $file_name $file_size $file_type
done
}
這是輸出
Listing files in Junk Directory
FilenameSize(Bytes) Type hBs
------------------- ---- hBs
du: cannot access ‘/home/student/.junkdir/*’: No such file or directory
du: cannot access ‘/home/student/.junkdir/*’: No such file or directory
ERROR: cannot open hBs
`/home/student/.junkdir/*' (No such hBs
file ordirectory) hBs
你發佈時,它編輯腳本?這些錯誤信息讓我認爲你的for循環實際上是'用於通配符的$ FILES/*'中的列表文件。 –
目錄「/home/student/.junkdir/」存在嗎? –
對不起,我原來的代碼有通配符。我想我已經意識到我的問題的一部分。 –