GNU/Linux >> Znalost Linux >  >> Linux

Existuje způsob, jak přimět mv, aby vytvořil adresář, do kterého se má přesunout, pokud neexistuje?

Co říkáte na tuto jednolinku (v bash):

mkdir --parents ./some/path/; mv yourfile.txt $_

Rozebrat to:

mkdir --parents ./some/path

vytvoří adresář (včetně všech přechodných adresářů), poté:

mv yourfile.txt $_

přesune soubor do tohoto adresáře ($_ se rozvine na poslední argument předaný předchozímu příkazu shellu, tj.:nově vytvořený adresář).

Nejsem si jistý, jak dalece to bude fungovat v jiných shellech, ale mohlo by vám to dát nějaké nápady, co hledat.

Zde je příklad použití této techniky:

$ > ls
$ > touch yourfile.txt
$ > ls
yourfile.txt
$ > mkdir --parents ./some/path/; mv yourfile.txt $_
$ > ls -F
some/
$ > ls some/path/
yourfile.txt

mkdir -p `dirname /destination/moved_file_name.txt`  
mv /full/path/the/file.txt  /destination/moved_file_name.txt

Uložte jako skript s názvem mv nebo mv.sh

#!/bin/bash
# mv.sh
dir="$2"
tmp="$2"; tmp="${tmp: -1}"
[ "$tmp" != "/" ] && dir="$(dirname "$2")"
[ -a "$dir" ] ||
mkdir -p "$dir" &&
mv "[email protected]"

Nebo umístěte na konec vašeho souboru ~/.bashrc funkci, která nahradí výchozí mv na každém novém terminálu. Použití funkce umožňuje bashu zachovat si paměť, místo aby bylo nutné pokaždé číst soubor skriptu.

function mv ()
{
    dir="$2"
    tmp="$2"; tmp="${tmp: -1}"
    [ "$tmp" != "/" ] && dir="$(dirname "$2")"
    [ -a "$dir" ] ||
    mkdir -p "$dir" &&
    mv "[email protected]"
}

Ty jsou založeny na podání Chrise Lutze.


Linux
  1. Jak vytvořit nové okno v aktuálním adresáři v Tmux?

  2. Nejrychlejší způsob, jak extrahovat Iso?

  3. Jaký je nejbezpečnější způsob, jak vyprázdnit adresář v *nix?

  1. Jak vytvořit soubor, pouze pokud neexistuje?

  2. Existuje způsob, jak získat nejnovější jar serveru prostřednictvím adresy URL, která se nemění?

  3. Existuje způsob, jak zajistit, aby Nano podporovalo automatické dokončování a automatické uzavírání závorek?

  1. Existuje způsob, jak synchronizovat strukturu adresářů, když jsou soubory již na obou stranách?

  2. Jak zajistím, aby hledání vyloučilo složku, ve které hledá?

  3. Jaký je nejjednodušší způsob, jak vytvořit virtuální balíček v debianu?