una todos por los eliminar directorio crear confirmacion como comandos carpeta borrar archivos archivo bash shell text-processing

bash - todos - eliminar archivos en unix



Eliminar los primeros componentes del directorio de la ruta del archivo (5)

Mira man expr

expr "foo/bar/baz" : ''[^/]*//(.*/)'' hará lo que quieras.

Necesito eliminar un directorio (el más a la izquierda) de las variables en Bash. Encontré maneras de cómo eliminar toda la ruta o usar dirname y otros, pero estaba eliminando todo o un componente de ruta en el lado derecho; no me ayudaría Para que entiendas mejor lo que necesito, escribiré un ejemplo:

Tengo a/project/hello.c , a/project/docs/README , ... y quiero eliminar ese a/ después de algunos comandos tendré project/hello.c y project/docs/README project/hello.c ..


Ninguno de los ejemplos anteriores resolvió mi problema. Quería poder cambiar las versiones de Java cambiando el valor $ PATH . Después de buscar en Google y no puedo encontrar la respuesta suficiente, tejí mi propia solución a continuación.

Aquí hay un extracto en mi .bashrc :

jv8() { export JAVA_HOME=/opt/jdk1.8.0_121 y=$(echo $PATH | tr '':'' ''/n'' |sed ''///opt//jdk/d'' | tr ''/n'' '':'') export PATH=$JAVA_HOME/bin:$y } jv6() { export JAVA_HOME=/opt/jdk1.6.0_45 y=$(echo $PATH | tr '':'' ''/n'' |sed ''///opt//jdk/d'' | tr ''/n'' '':'') export PATH=$JAVA_HOME/bin:$y }

Entonces, en mi shell bash, puedo alternar simplemente por:

$> jv6 java -version java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) $> jv8 java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)


Puede usar cualquiera de:

x=a/b/c/d y=a/ echo ${x#a/} echo ${x#$y} echo ${x#*/}

Los tres comandos de eco producen b/c/d ; podrías usar el valor de la forma que elijas, por supuesto.

El primero es apropiado cuando conoces el nombre que debes eliminar al escribir el guión.

El segundo es apropiado cuando tienes una variable que contiene el prefijo que necesitas eliminar (variante menor: y=a; echo ${x#$y/} ).

El tercero es el más general: elimina cualquier prefijo arbitrario hasta la primera barra. Me sorprendió gratamente descubrir que el * funcionó de forma no codiciosa cuando lo probé con bash (versión 3.2) en MacOS X 10.6.6. Lo atribuiré a demasiado Perl y expresiones regulares (porque, cuando pienso en it, * en shell no incluye barras inclinadas).


echo "a/project/hello.c" | sed ''s,^[^/]*/,,''


echo a/project/hello.c | cut -d''/'' -f2-