Shell

如何根據 file 命令的輸出打開文件

  • March 22, 2018

所以我有一個目錄,我希望在該目錄中打開該目錄中唯一可讀的文件。我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
}

引用自:https://unix.stackexchange.com/questions/432882