Shell如何根據
如何根據 file
命令的輸出打開文件
所以我有一個目錄,我希望在該目錄中打開該目錄中唯一可讀的文件。我
file *
用來列印每個文件的類型,一個文件顯示為 ASCII 文本。如何將該特定文件重定向到 cat 或更少以顯示其內容?編輯:
你們都很棒。我每一個都在嘗試。
您可以使用
awk
搜尋包含 ASCII 文本的文件:less $(file * | awk -F: '$2 ~ "ASCII text" {print $1}')
這實際上也適用於包含多個文本文件的目錄。
以下 bash 函式將查看目前目錄中的文件;如果其中一個確切地報告為“ASCII 文本”,那麼它將
cat
是該文件。filecat() { local files=(./*) local count=0 local filename= local f= for f in "${files[@]}" do if file "$f" 2>/dev/null | grep -q ": ASCII text$" then count=$((count + 1)) filename="$f" fi done if [ "$count" -eq 1 ] then cat "$filename" fi }