ajouter filterf
This commit is contained in:
		
							parent
							
								
									90f92c74a3
								
							
						
					
					
						commit
						88e6b9b92f
					
				
							
								
								
									
										66
									
								
								bin/filterf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								bin/filterf
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,66 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 | ||||||
|  | source "$(dirname -- "$0")/../load.sh" || exit 1 | ||||||
|  | 
 | ||||||
|  | function filter_arg() { | ||||||
|  |     local inverse="$1"; shift | ||||||
|  |     while read arg; do | ||||||
|  |         if [ "$inverse" == 0 ]; then | ||||||
|  |             [ $1 "$arg" ] && echo "$arg" | ||||||
|  |         else | ||||||
|  |             [ $1 "$arg" ] || echo "$arg" | ||||||
|  |         fi | ||||||
|  |     done | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | chdir= | ||||||
|  | lsdirs= | ||||||
|  | lsfiles= | ||||||
|  | dir= | ||||||
|  | file= | ||||||
|  | link= | ||||||
|  | exists= | ||||||
|  | nonzero= | ||||||
|  | inverse=0 | ||||||
|  | args=( | ||||||
|  |     "filtrer une liste de fichiers" | ||||||
|  |     "[filter]" | ||||||
|  |     -C:,--chdir chdir= "changer le répertoire courant avant de lister les fichiers" | ||||||
|  |     --lsdirs . "n'afficher que les répertoires du répertoire courant" | ||||||
|  |     --lsfiles . "n'afficher que les fichiers du répertoire courant" | ||||||
|  |     -d,--dir . "garder uniquement les répertoires" | ||||||
|  |     -f,--file . "garder uniquement les fichiers" | ||||||
|  |     -L,--link . "garder uniquement les liens symboliques" | ||||||
|  |     -e,--exists . "garder uniquement les fichiers/répertoires qui existent" | ||||||
|  |     -s,--nonzero . "garder uniquement les fichiers ayant une taille non nulle" | ||||||
|  |     -n,--inverse inverse=1 "inverser le sens du filtre" | ||||||
|  | ) | ||||||
|  | parse_args "$@"; set -- "${args[@]}" | ||||||
|  | 
 | ||||||
|  | if [ -n "$chdir" ]; then | ||||||
|  |     cd "$chdir" || die | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if in_isatty; then | ||||||
|  |     # lister les fichiers | ||||||
|  |     [ -n "$lsdirs" -o -n "$lsfiles" ] || { | ||||||
|  |         lsdirs=1 | ||||||
|  |         lsfiles=1 | ||||||
|  |     } | ||||||
|  |     if [ -n "$lsdirs" -a -n "$lsfiles" ]; then | ||||||
|  |         cmd="{ $(qvals ls_dirs . "$@"); $(qvals ls_files . "$@"); }" | ||||||
|  |     elif [ -n "$lsdirs" ]; then | ||||||
|  |         cmd="$(qvals ls_dirs . "$@")" | ||||||
|  |     elif [ -n "$lsfiles" ]; then | ||||||
|  |         cmd="$(qvals ls_files . "$@")" | ||||||
|  |     fi | ||||||
|  | else | ||||||
|  |     cmd="cat" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | [ -n "$dir" ] && cmd="$cmd | filter_arg $inverse -d" | ||||||
|  | [ -n "$file" ] && cmd="$cmd | filter_arg $inverse -f" | ||||||
|  | [ -n "$link" ] && cmd="$cmd | filter_arg $inverse -L" | ||||||
|  | [ -n "$exists" ] && cmd="$cmd | filter_arg $inverse -e" | ||||||
|  | [ -n "$nonzero" ] && cmd="$cmd | filter_arg $inverse -s" | ||||||
|  | eval "$cmd" | ||||||
							
								
								
									
										10
									
								
								wip/TEMPLATE
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								wip/TEMPLATE
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 | ||||||
|  | source "$(dirname -- "$0")/../load.sh" || exit 1 | ||||||
|  | 
 | ||||||
|  | args=( | ||||||
|  |     "description" | ||||||
|  |     "usage" | ||||||
|  | ) | ||||||
|  | parse_args "$@"; set -- "${args[@]}" | ||||||
|  | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user