Tengo este script para eliminar las primeras 4 líneas de cada archivo en una carpeta si su extensión es .txt.
Quiero poder colocar un archivo.command con este script en la misma carpeta para poder hacer doble clic en él y ejecutarlo.
Así que hice un archivo con esto:
#!/bin/bash
find . -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;
Si ejecuto el archivo, se eliminarán 4 líneas de todos mis archivos txt de Mac :(
Pensé en el hallazgo. estaba destinado a permanecer en la misma carpeta...
¿Cómo lo soluciono para que el comando se ejecute SÓLO en la carpeta donde se encuentra el archivo.command?
------------Respuesta------------
Este código:
find . -maxdepth 1 -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;
realmente funciona, el problema fue:
El archivo creado con el comando no se hizo ejecutable para esa tarea:
chmod +x file.command
Luego ejecuta el comando desde la terminal con:
./file.command
------------Respuesta------------
Como se ha comentado, la búsqueda desciende a subdirectorios de forma predeterminada.
En su lugar, haz esto:
#!/bin/bash
cd "$(dirname "1008611")" # change directory to the location of the script
for file in *.txt; do # and iterate over the .txt files
sed -i.bak '1,4d' "$file"
done