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.
Zná někdo nějaké staticky psané skriptovací jazyky?
Linux:vypočítat jeden hash pro danou složku a obsah?