Los métodos comunes son:
ls * | while read file; do data "$file"; done
for file in *; do data "$file"; done
El segundo puede tener problemas si tiene espacios en blanco en los nombres de archivo; en ese caso usted probablemente querrá asegurarse de que funciona en un subnivel, y establecer IFS:
(IFS=$'\n'; for file in *; do data "$file"; done)
se puede envolver fácilmente el primero en una secuencia de comandos:
#!/bin/bash
# map.bash
while read file; do
"$1" "$file"
done
el cual puede ser ejecutado como lo solicitaste, solo ten cuidado de no ejecutar accidentalmente nada tonto con él. La ventaja de utilizar una construcción de bucle es que puede colocar fácilmente varios comandos dentro de ella como parte de un proyecto de una línea, a diferencia de xargs, donde tendrá que colocarlos en un script ejecutable para que se ejecute.
Por supuesto, también puede simplemente utilizar la utilidad xargs
:
find -maxdepth 0 * | xargs -n 1 data
Tenga en cuenta que usted debe asegurarse de que los indicadores están apagados (ls --indicator-style=none
) si normalmente se utilicen, o la @
anexa a los enlaces simbólicos se convertirán en nombres de archivo inexistentes.
oh sí, ¡esto es realmente lo que quiero! ty – Claudiu