No entiendo muy bien el ejemplo dado por el 'hombre encontrado', ¿alguien me puede dar algunos ejemplos y explicaciones? ¿Puedo combinar expresiones regulares en él?¿Cómo usar la opción '-rune' de 'buscar' en sh?
la pregunta más detallada es la siguiente:. Escribir un script de shell, changeall, que tiene una interfaz como "changeall [-r | -R] 'texto1' 'cadena2' Va a encontrar todos los archivos con una sufijo de .h, .C, .cc o .cpp y cambie todas las ocurrencias de "cadena1" a "cadena2". -r es una opción para permanecer en el directorio actual solamente o incluyendo el subdirectorio. NOTA: 1) para el caso no recursivo , 'ls' NO está permitido, solo pudimos usar 'find' y 'sed'. 2) Intenté 'find -depth' pero NO fue compatible. Por eso me preguntaba si '-prune' podría ayudar, pero no lo hice. 't entender el ejemplo de' hombre encontrar '.
EDI T2: estaba haciendo una tarea, no hice una pregunta con mucho detalle porque me gustaría terminarla yo mismo. Como ya lo hice y se lo entregué, ahora puedo formular toda la pregunta. Además, logré terminar la tarea sin usar -prune, pero me gustaría aprender de todos modos.
no es 100% obvio en su texto (pero como usted solo imprime '* .foo' no está en conflicto) pero la parte de prun no imprime nada (no solo directorios) llamado ".snapshot". es decir, '-prune' no solo funciona en directorios (pero, para los directorios, también evita que entren los directorios que coinciden con esa condición, es decir, aquí los directorios que coinciden con' -name .snapshot'). –
y +1 para usted por la explicación bien hecha (y especialmente la nota importante).Debes enviar esto a los desarrolladores de find (ya que la página de manual no explica "ciruela" para seres humanos normales ^^ Me costó muchos intentos averiguarlo, y no vi ese efecto secundario del que nos advertiste) –
@OlivierDulac Ese es un muy buen punto acerca de los posibles archivos de extracción que desea conservar. He actualizado la respuesta para aclarar esto. en realidad, no es el propio '-prune' el que causa esto, por cierto. El problema es que el operador o "cortocircuitos", o tiene una precedencia menor que y. El resultado final es que si se encuentra un archivo llamado '.snapshot', coincidirá con el primer' -name', '-prune' no hará nada (pero devuelve true), y luego el o devuelve true desde su argumento de la izquierda era verdad. La acción (por ejemplo: '-print') es parte de su segundo argumento, por lo que nunca tiene posibilidad de ejecución. –