Este título es un poco confuso, así que déjame desglosarlo. Básicamente tengo un directorio completo de archivos con varios nombres y extensiones:¿Cómo uso Bash para crear una copia de un archivo con un sufijo adicional antes de la extensión?
MainDirectory/
image_1.png
foobar.jpeg
myFile.txt
Para una aplicación para iPad, tengo que crear copias de los mismos con el sufijo @ 2X añade al final de todos estos nombres de archivo , antes de la extensión - por lo que iba a terminar con esto:
MainDirectory/
image_1.png
[email protected]
foobar.jpeg
[email protected]
myFile.txt
[email protected]
en lugar de cambiar los nombres de los archivos de uno en uno con la mano, quiero crear una secuencia de comandos para cuidar de él para mí. Actualmente tengo lo siguiente, pero no funciona como se esperaba:
#!/bin/bash
FILE_DIR=.
#if there is an argument, use that as the files directory. Otherwise, use .
if [ $# -eq 1 ]
then
$FILE_DIR=$1
fi
for f in $FILE_DIR/*
do
echo "Processing $f"
filename=$(basename "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"
newFileName=$(echo -n $filename; echo -n [email protected]; echo -n $extension)
echo Creating $newFileName
cp $f newFileName
done
exit 0
que también quieren mantener esta fiesta a puro, y no depender de las llamadas específicas del OS. ¿Qué estoy haciendo mal? ¿Qué puedo cambiar o qué código funcionará para hacer lo que necesito?
trabajado como un encanto! Gracias – Phil
no sabía sobre #, ##,% y %% - ¡muy útil, gracias! más aquí http://tldp.org/LDP/abs/html/string-manipulation.html – ahmedre