# Crear un archivo vacío
touch archivo.txt
# Crear múltiples archivos
touch archivo1.txt archivo2.txt archivo3.txt
# Crear archivos con nombres específicos de bioinformática
touch secuencias.fasta
touch metadata.tsv
touch pipeline_config.yaml
touch analysis_log.txt
# Crear archivos con timestamp
touch experimento_$(date +%Y%m%d).log
6 Gestión de Archivos y Directorios
La gestión eficiente de archivos y directorios es esencial en bioinformática, donde trabajamos con grandes volúmenes de datos, múltiples versiones de archivos y estructuras de proyectos complejas.
Nota: Parte de los siguientes ejercicios se realizarán usando archivos de secuenciación y anotación de N. crassa v2 (Galagan et al. 2003)
6.1 Creación de archivos y directorios
6.1.1 touch
- Crear archivos vacíos
touch
es utilizado para cambiar la fecha y hora de última modificación de un archivo. También puede utilizarse para crear un archivo vacío.
Ejemplo:
# Asegurate estar en la carpeta class
# Crear archivos de prueba
touch genome_assembly.fasta
touch gene_annotations.gff3
touch protein_sequences.faa
touch analysis_parameters.txt
# Listamos los archivos esperadno encontrar los que creamoms
ls -lt
Resultado esperado:
drwxrwxr-x 2 david david 4096 May 26 14:54 Neucr2
-rw-rw-r-- 1 david david 0 May 26 12:56 protein_sequences.faa
-rw-rw-r-- 1 david david 0 May 26 12:56 analysis_parameters.txt
-rw-rw-r-- 1 david david 0 May 26 12:56 gene_annotations.gff3
-rw-rw-r-- 1 david david 0 May 26 12:56 genome_assembly.fasta
drwxr-xr-x 2 david david 4096 Nov 17 2015 creatures
drwxr-xr-x 5 david david 4096 Nov 17 2015 data
drwxr-xr-x 2 david david 4096 Nov 17 2015 Desktop
drwxr-xr-x 2 david david 4096 Nov 17 2015 molecules
drwxr-xr-x 3 david david 4096 Nov 17 2015 north-pacific-gyre
-rw-r--r-- 1 david david 86 Nov 17 2015 notes.txt
-rw-r--r-- 1 david david 32 Nov 17 2015 pizza.cfg
-rw-r--r-- 1 david david 21583 Nov 17 2015 solar.pdf
drwxr-xr-x 6 david david 4096 Nov 17 2015 writing
6.1.2 mkdir
- Crear directorios
El comando mkdir
(Make Directory) nos permite crear directorios
# Crear un directorio
mkdir nuevo_directorio
# Crear múltiples directorios
mkdir dir1 dir2 dir3
# Crear estructura de directorios anidados (-p crea padres si no existen)
mkdir -p proyecto/datos/raw
mkdir -p proyecto/datos/processed
mkdir -p proyecto/resultados/plots
Ejemplo:
# Crearmos una carpeta de prueba
mkdir -p project/{data/{raw_sequences,processed,metadata},scripts/{preprocessing,analysis},results/{diversity,taxonomy,figures},references}
# Verificar la estructura creada
tree project/
Resultado esperado:
project/
├── data
│ ├── metadata
│ ├── processed
│ └── raw_sequences
├── references
├── results
│ ├── diversity
│ ├── figures
│ └── taxonomy
└── scripts
├── analysis
└── preprocessing
13 directories, 0 files
Opciones útiles de mkdir
:
-p
: crear directorios padre si no existen-v
: modo verbose (mostrar lo que se está creando)-m
: establecer permisos específicos
6.2 Copiado de archivos y directorios
6.2.1 cp
- Copiar archivos y directorios
El comando cp
(Copy) nos permite copiar archivos y directorios
# Copiar un archivo
cp archivo_original.txt copia_archivo.txt
# Copiar a otro directorio
cp secuencias.fasta /ruta/destino/
# Copiar múltiples archivos a un directorio
cp *.fasta *.fastq /datos/backup/
# Copiar manteniendo atributos originales
cp -p archivo.txt copia_con_atributos.txt
# Copiar directorios recursivamente
cp -r directorio_origen/ directorio_destino/
# Copiar con modo interactivo (pregunta antes de sobrescribir)
cp -i archivo.txt destino.txt
Ejemplo:
# Copiar un archivo de mi lugar a otro lugar
cp protein_sequences.faa project/data/.
# Copiar una carpeta de otro lugar a mi lugar
cp -r project/results/ .
# Copiar una carpeta de otro lugar a otro lugar
cp -r project/references project/data/.
# Verificamos
tree project/ results/
Resultado esperado:
project/
├── data
│ ├── metadata
│ ├── processed
│ ├── protein_sequences.faa
│ ├── raw_sequences
│ └── references
├── references
├── results
│ ├── diversity
│ ├── figures
│ └── taxonomy
└── scripts
├── analysis
└── preprocessing
results/
├── diversity
├── figures
└── taxonomy
18 directories, 1 file
Opciones útiles de cp
:
-r
o-R
: copia recursiva (para directorios)-p
: preservar atributos (permisos, timestamps)-i
: modo interactivo --v
: modo verbose-u
: copiar solo si el archivo fuente es más nuevo
6.3 Movimiento y renombrado
6.3.1 mv
- Mover y renombrar archivos
El comando mv
nos permite mover (Move) o renombrar archivos o directorios
# Renombrar un archivo
mv nombre_viejo.txt nombre_nuevo.txt
# Mover archivo a otro directorio
mv archivo.txt /otro/directorio/
# Mover y renombrar simultáneamente
mv datos_crudos.csv datos/raw/experimento_01.csv
# Mover múltiples archivos
mv *.fastq datos/secuencias/
# Mover directorios
mv proyecto_viejo/ proyectos/proyecto_renombrado/
Ejemplo:
# Movemos archivos
mv gene_annotations.gff3 project/data/.
mv genome_assembly.fasta project/data/.
mv protein_sequences.faa project/results/.
mv analysis_parameters.txt project/references/.
# Movemos carpetas
mv results project/data/.
# Cambiamos el nombre de una carpeta
mv project/data/results/ project/data/results_v2
# Verificamos
tree project
Resultado esperado:
project/
├── data
│ ├── gene_annotations.gff3
│ ├── genome_assembly.fasta
│ ├── metadata
│ ├── processed
│ ├── protein_sequences.faa
│ ├── raw_sequences
│ ├── references
│ └── results_v2
│ ├── diversity
│ ├── figures
│ └── taxonomy
├── references
│ └── analysis_parameters.txt
├── results
│ ├── diversity
│ ├── figures
│ ├── protein_sequences.faa
│ └── taxonomy
└── scripts
├── analysis
└── preprocessing
18 directories, 5 files
6.4 Eliminación de archivos y directorios
6.4.1 rm
- Eliminar archivos y directorios
⚠️ PRECAUCIÓN: El comando rm
elimina (Remove) permanentemente. No hay papelera de reciclaje.
# Eliminar un archivo
rm archivo_innecesario.txt
# Eliminar múltiples archivos
rm archivo1.txt archivo2.txt
# Eliminar con confirmación
rm -i archivo_importante.txt
# Eliminar archivos por patrón
rm *.tmp
rm *_backup.*
# Eliminar directorios vacíos
rmdir directorio_vacio/
# Eliminar directorios con contenido
rm -r directorio_completo/
# Eliminar forzadamente (sin confirmación)
rm -rf directorio/ # ¡MUY PELIGROSO!
Ejemplo:
# Asegurate de estar dentro de la caperta class
# Eliminamos archivos
rm -rf project/data
# Verificamos
tree project/
Resultado esperado:
project/
├── references
│ └── analysis_parameters.txt
├── results
│ ├── diversity
│ ├── figures
│ ├── protein_sequences.faa
│ └── taxonomy
└── scripts
├── analysis
└── preprocessing
9 directories, 2 files
Ejemplo:
ls
rm -rf project/
ls
Resultado esperado:
creatures data Desktop molecules Neucr2 north-pacific-gyre notes.txt pizza.cfg solar.pdf writing
Opciones importantes de rm
:
-i
: modo interactivo (pregunta antes de eliminar)-r
o-R
: eliminación recursiva (directorios)-f
: forzar eliminación sin preguntar-v
: modo verbose
6.5 Manejo Seguro de Archivos
6.5.1 Crear copias de seguridad antes de operaciones importantes
Cuando inicias un proyecto con grandes cantidades de datos, se recomienda crear una copia de seguridad de los datos originales, y trabajar con los datos que se copiaron, por si se comete algún error y se modifican estos archivos, siempre tendrás la copia original.
En lugar de eliminar una carpeta, una posible opción de seguridad, es crear primero una carpeta
basura
donde lo que desees eliminar, lo muevas a esta carpeta. Y cuando finalices tu proyecto, ahora si puedes eliminar todo lo que hayas movido a esa carpeta.
6.6 Casos de uso prácticos en bioinformática
6.6.1 Ejemplo 1: Organización de datos de secuenciación
# Crear estructura de proyecto
mkdir -p seq_project/{raw_data,processed_data,results,scripts,metadata}
# Simular llegada de datos de secuenciación
touch sample_{01..10}_R{1,2}.fastq.gz
# Organizar por tipo de muestra
mkdir -p seq_project/raw_data/{control,treatment}
mv sample_0{1..5}* seq_project/raw_data/control/
mv sample_0{6..9}* seq_project/raw_data/treatment/
mv sample_10* seq_project/raw_data/treatment/
# Crear metadatos
touch seq_project/metadata/sample_info.tsv
touch seq_project/metadata/experimental_design.txt
6.6.2 Ejemplo 2: Gestión de ensamblajes de genomas
# Crear directorio para diferentes versiones de ensamblaje
mkdir -p genome_assembly/{version_1.0,version_1.1,version_2.0,final}
# Crear archivos
touch assembly_draft.fasta assembly_improved.fasta assembly_polished.fasta
# Copiar ensamblajes a versiones específicas
cp assembly_draft.fasta genome_assembly/version_1.0/
cp assembly_improved.fasta genome_assembly/version_1.1/
cp assembly_polished.fasta genome_assembly/version_2.0/
# Crear enlaces a la versión final
ln -s version_2.0/assembly_polished.fasta genome_assembly/final/genome_final.fasta
6.7 Consejos y Buenas Prácticas
- Siempre hacer backup: Antes de operaciones destructivas
- Verificar antes de eliminar: Usar
ls
para confirmar qué se va a eliminar - Usar modo interactivo:
-i
en operaciones críticas - Organización consistente: Mantener estructura similar en todos los proyectos
- Documentar cambios: Llevar log de reorganizaciones importantes
6.8 Resumen de Comandos
Comando | Función | Ejemplo Clave |
---|---|---|
touch |
Crear archivos vacíos | touch sequences.fasta |
mkdir |
Crear directorios | mkdir -p data/{raw,processed} |
cp |
Copiar archivos/directorios | cp -r data/ backup/ |
mv |
Mover/renombrar | mv old_name.txt new_name.txt |
rm |
Eliminar archivos | rm -i temp_files/* |
rmdir |
Eliminar directorios vacíos | rmdir empty_folder/ |