これは私の設定です。/tmp/test/
私が使うならls -l
-rw-r--r-- 1 rubo77 rubo77 0 Okt 21 04:15 a
-rw-r--r-- 1 rubo77 rubo77 2 Okt 21 04:16 b
drwxr-xr-x 2 rubo77 rubo77 4,0K Okt 21 03:58 c
lrwxrwxrwx 1 rubo77 rubo77 1 Okt 21 03:57 d -> c
lrwxrwxrwx 1 rubo77 rubo77 1 Okt 21 03:58 e -> a
lrwxrwxrwx 1 rubo77 rubo77 2 Okt 21 03:59 f -> nofile
今使用する場合:詳細ls
なしでファイルのみが表示されます。
a b c d e f
ls -F
アイテムにインジケータ(*/=>@|のいずれか)を追加します。
a b c/ d@ e@ f@
このディスプレイをどのように取得できますか?
a b c/ d->c/ e->a f->nofile
答え1
#!/bin/bash
ls -l | while read response
do
words=`echo $response | wc -w` #count how many words are
case "$words" in
9) echo $response | cut -d " " -f9 # when file is not a symlink then the ouput prints only 9 fields
;;
11) echo $response | cut -d " " -f9-11 # when file is symlink its prints 11 fields indicating the target and symbol "->"
;;
esac
done
答え2
出力をバッファリングしている場合は、次のように送信できますcolumn
。
#!/bin/bash
TMP=/tmp/output-buffer
echo "">$TMP
ls -l | while read response
do
words=`echo $response | wc -w`
case "$words" in
9) echo $response | cut -d " " -f9 >>$TMP
;;
11) echo $response | cut -d " " -f9-11 >>$TMP
;;
esac
done
cat $TMP | column
rm $TMP
答え3
より多くの情報を含む簡単な解決策:
ls -hago | column
また興味深いです(リンクは表示されません)。
これは、人間が読めるサイズのすべてのファイルを列に表示します。
ls -sh
次のコマンドが操作を実行します。
ls -lah | awk '{print $5, $9$10$11}' | column -t | column
または
ls -hago --color=no| sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/' | column
色を使用することも効果がありますが、あまり整理されていないようです。
if [ -t 1 ]; then color=yes; else color=no; fi
ls -hago --color="$color"| sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/' | column