Lista directories

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Lista directories

Inlägg av Osprey »

Ofta när man jobbar i terminalen så behöver man veta vilka directories (mappar) som finns under det man står i. Här är ett script som jag snickrat ihop för just det...

Kod: Markera allt

#! /bin/bash
#
function usage {
	cat << EOD

	lsd [-a|--all] [-l|--long] [-t] [-r] [DIRECTORY]

	Options:

		-a | --all	List all directories, including those beginning with "."
		-l | --long	Long listing, including information
		-t 		Sort in time-order (can only be used together with -l)
		-r		Sort in reverse order (can only be used together with -l)

EOD
}
#
#####################################################################
TEMP=`getopt -oaltr --long all,long -n $(basename $0) -- "$@"`
if [[ $? -ne 0 ]]; then
	usage
fi
eval set -- "$TEMP"
ALL=false
OPT=""
LONG=false
CMDNAME=$(basename $0)
while true; do
	case $1 in
		-a|--all)
			ALL=true
			shift
			;;
		-l|--long)
			LONG=true
			shift
			;;
		-t)
			OPT=$OPT" -t"
			shift
			;;
		-r)	
			OPT=$OPT" -r"
			shift
			;;
		--)
			shift
			break
			;;
		*)
			echo "-Got a star..."
			shift
			;;
	esac
done
P1=$1
P2=$2
P3=$3
P4=$4
#
echo 
if [[ $LONG == true ]]; then
	if [[ -z $P1 ]]; then
		if [[ $ALL == true ]]; then
			#ls -lad --color=auto */. | sed 's=/.==g'
			ls -Al $OPT --indicator-style=none --color=auto | grep "^d"
		else
			#ls -ld --color=auto */. | sed 's=/.==g'
			ls -l $OPT --indicator-style=none --color=auto | grep "^d"
		fi
	else
		if [[ $ALL == true ]]; then
			#ls -lad --color=auto $P1/*/. | sed 's=\/\.==g'
			ls -Al $OPT --indicator-style=none --color=auto $P1 | grep "^d"
		else
			#ls -ld --color=auto $P1/*/. | sed 's=\/\.==g'
			ls -l $OPT --indicator-style=none --color=auto $P1 | grep "^d"
		fi
	fi
else
	if [[ -z $P1 ]]; then
		if [[ $ALL == true ]]; then
			find -L . -maxdepth 1 -type d | awk -F "./" '{ print $2 }' | sort | column
		else
			find -L . -maxdepth 1 -type d -name "[!.]*" | awk -F "./" '{ print $2 }' | sort | column
		fi
	else
		if [[ $ALL == true ]]; then
			find -L $P1 -maxdepth 1 -type d -not -name $P1 | sort | column
		else
			find -L $P1 -maxdepth 1 -type d -name "[!.]*" -not -name $P1 | sort | column
		fi
	fi
fi
echo 
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

Re: Lista directories

Inlägg av johanre »

Snygt! Men det går å andra sidan också att:

Kod: Markera allt

find . -maxdepth 1 -type d
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Lista directories

Inlägg av Osprey »

johanre skrev:Snygt! Men det går å andra sidan också att:

Kod: Markera allt

find . -maxdepth 1 -type d
Jo precis och det är ju en av de varianter jag använder mig av, men det ger inte riktigt lika många möjligheter... :)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Skriv svar

Återgå till "Terminalforum"