GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo tocar un archivo y mkdir si es necesario en una línea

En perl, usando uno de mis módulos favoritos:Path::Tiny.

path("/opt/test/test.txt")->touchpath;

Del documento:

Combina mkpath y touch. Crea el directorio principal si no existe, antes de tocar el archivo.


Me gusta escribir muy poco, así que puse este comando en un fn con nombre en mi .profile, pero usé esta fórmula durante años antes de hacerlo:

mkdir -p dirname/sub/dir && touch $_/filename.ext

La variable $_ almacena el último argumento del comando anterior. Bastante útil para saber en general.


mkdir B && touch B/myfile.txt

Alternativamente, cree una función:

   mkfile() { 
    mkdir -p $( dirname "$1") && touch "$1" 
   }

Ejecútelo con 1 argumento:ruta de archivo. Diciendo:

mkfile B/C/D/myfile.txt

crearía el archivo myfile.txt en el directorio B/C/D.


En un script de shell, simplemente puede hacer:

mkdir -p /opt/test && touch /opt/test/test.txt

mkdir -p no fallará (y no hará nada) si el directorio ya existe.

En perl, usa make_path del File::Path módulo, luego crea el archivo como quieras. make_path tampoco hace nada si el directorio ya existe, por lo que no es necesario que lo verifique usted mismo.


Linux
  1. Cómo agregar números de línea a archivos de texto en Linux

  2. Cómo dividir y combinar archivos desde la línea de comandos en Linux

  3. Cómo contar el número de líneas en un archivo en Linux (ejemplos de comandos wc y nl)

  4. Unix:crea una ruta de carpetas y archivos

  5. ¿Cómo se comprime un archivo y se conserva el archivo .gz?

Cómo leer un archivo línea por línea en Bash

Cómo dividir un archivo grande en partes en números de línea dados

Cómo trabajar con enlaces duros y suaves en Linux

¿Codificar el contenido del archivo y repetirlo como una sola línea?

¿Cómo verificar el uso de Inode desde cPanel y la línea de comandos?

¿Cómo cargar un archivo por FTP desde la línea de comandos?