у меня есть следующий код:
#!bin/bash
#Path del archivo .config
. /home/$USER/Documentos/source.config
counter=0
#Busqueda de directorios con archivos .zip
while [ $counter -le 0 ]
do
if find $dirGeneral -iname "*.zip" -exec -quit;
then
#Proceso cuando encuentro archivo .zip
else
echo "the file does not exist!"
fi
counter=$(( $counter +1 ))
done
То, что я хочу, состоит в том, чтобы, когда будет находиться файл (Первое совпадение .zip) сохраняло маршрут и имя файла, находившегося в переменной, или двигать немедленно файл, подуманный в другой маршрут.
if find $dirGeneral -iname "*.zip" -exec -quit;
Я не смог находить большую информацию по этому поводу, (Скорее я не знаю правильные условия, чтобы искать и это делать из-за меня самого.)
в конце концов с достаточно investigaciГіn я смог реализовывать то, в чем он нуждался... Я не думаю, что он та soluciГіn mГЎs эффективная, но функционируй.
#!bin/bash
#Path del archivo .config
. /home/$USER/Documentos/source.config
counter=0
if [ "$(ls -A $dirTrabajo)" ]; then
echo "Existen archivos en el directorio de trabajo"
else
#Busqueda de los archivos con extensión .zip en el directorio general
find $dirGeneral -name '*.zip' | while read line; do
while [ $counter -le 0 ]
do
cd "${line%/*}/"
if [ -f "$metadata" ]
then
#Mover, descomprimir archivo .zip y mover metadata.txt al directorio de trabajo
if [ "$(ls -A $dirTrabajo)" ]; then
echo "OK"
else
urlpath="${line%/*}/"
mv $urlpath''$metadata $dirTrabajo'/'
mv $line $dirTrabajo'/'
cd $dirTrabajo'/'
unzip \*.zip
echo "Proceso exitoso."
fi
counter=$(( $counter +1 ))
else
counter=$(( $counter +1 ))
fi
done
counter=0
done
fi
У тебя есть несколько cositas, которые могут становиться лучше aquГ-. Сначала, estГЎs бросая find
, часть mГЎs медленная твоего рукописного шрифта, часто, когда только тебе нужна одна. AdemГЎs, ты не поместил твои переменные в кавычки, вещь, что harГЎ, что твой рукописный шрифт не функционировал правильно, если имена твоих файлов содержат место, tabs, lГ-neas новости (sГ, - они могут быть в имени файла), или символы glob (*
, ?
и т.д.).
BГЎsicamente, если ты только хочешь найти файл, тебе не надо никакой цикл:
fichero=$(find "$dirGeneral" -iname "*.zip" | head -n1)
Или, для того, чтобы оно функционировало с редкими именами:
fichero=$(find . -iname "*.zip" -print0 | head -zn1)
И уже estГЎ. Тогда, твой рукописный шрифт serГ - в:
#!/bin/bash
. /home/"$USER"/Documentos/source.config
fichero=$(find . -iname "*.zip" -print0 | head -zn1)
mv "$fichero" /otro/directorio