UPDATE: Saya telah menambahkan skrip (berbeda) baru ... Ignacio Vazquez-Abrams
ada benarnya: Pertanyaannya benar-benar meminta executable scripts are green, et cetera
.. oke ... Anda akan menemukan skrip (prototipe) pada akhir jawaban ini.
Bagian pertama (asli) ini adalah tentang grc
dan grcat
.
Ini seharusnya bekerja; grc
... (seperti yang ditunjukkan enzotib .. Nama paketnya adalah grc
... Sub-utilitas yang digunakan dalam contoh, adalahgrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
Contoh berikut dicetak
./
dalam magenta
bin/cpp/
di cyan
bigint
dalam warna putih tebal
Saya belum sepenuhnya memilah bagaimana menangani file konfigurasi, tetapi ini sepertinya akan melakukan apa yang Anda inginkan (setelah Anda menjinakkannya) .. mis. untuk file tanpa sub-dir, dan urutan warna tampaknya tidak berada dalam urutan yang sama dengan ekspresi.
Saya menganggap itu mungkin (tapi saya agak sibuk saat ini) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Ini skrip baru yang terinspirasi dari Ignacio :)
Ini berfungsi jika Anda menggunakan jalur tunggal sebagai argumen pertama find
.
Ada masalah yang TIDAK TERUJI dalam skrip ini. Itu hanya konsep.
Salah satu masalah adalah: Tautan Simbolik ... perairan keruh ...
Seperti apa adanya, ia mencetak sebuah ERROR
ketika bertemu dengan jenis yang tidak dikenal (mis. Tautan simbolis), dan kemudian melanjutkan pemrosesan melewati itu.
Terima kasih enzotib
atas tput
contohnya.
dircol=$(tput bold ;tput setaf 4)
coloff=$(tput sgr0)
root="$HOME" # define path here, not in 'find` arg
root="${root:-.}" # default to '.'
root="${root%/}/" # add trailing '/'
#
find "$root" -maxdepth 1 -name '*' -printf "%y %P\n" |
while read -r line ;do
case $line in
d ) printf "%s\n" "$dircol$root$coloff";;
d\ *) printf "%s\n" "$dircol$root${line:2}$coloff";;
f\ *) l="$root${line:2}"
d="${l%/*}/"
f="${l##*/}"
cd -P "$d"
printf "%s" "$dircol$d$coloff"
ls --color=always -R1 "$f"
cd - >/dev/null
;;
*) printf "ERROR - type not yet catered for\n";;
esac
done
bfs
yang sebagian besar dapat ditemukan yang disebut memiliki fungsi ini: github.com/tavianator/bfs