Bagaimana dengan one-liner ini (dalam bash):
mkdir --parents ./some/path/; mv yourfile.txt $_
Memecahnya:
mkdir --parents ./some/path
membuat direktori (termasuk semua direktori perantara), setelah itu:
mv yourfile.txt $_
memindahkan file ke direktori tersebut ($_ memperluas ke argumen terakhir yang diteruskan ke perintah shell sebelumnya, yaitu:direktori yang baru dibuat).
Saya tidak yakin seberapa jauh ini akan berhasil di shell lain, tetapi ini mungkin memberi Anda beberapa ide tentang apa yang harus dicari.
Berikut adalah contoh menggunakan teknik ini:
$ > 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
Simpan sebagai skrip bernama mv atau 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]"
Atau letakkan di akhir file ~/.bashrc Anda sebagai fungsi yang menggantikan mv default di setiap terminal baru. Menggunakan fungsi memungkinkan bash menyimpannya di memori, alih-alih harus membaca file skrip setiap saat.
function mv ()
{
dir="$2"
tmp="$2"; tmp="${tmp: -1}"
[ "$tmp" != "/" ] && dir="$(dirname "$2")"
[ -a "$dir" ] ||
mkdir -p "$dir" &&
mv "[email protected]"
}
Ini berdasarkan pengajuan Chris Lutz.