このワンライナーはどうですか (bash で):
mkdir --parents ./some/path/; mv yourfile.txt $_
内訳:
mkdir --parents ./some/path
ディレクトリ (すべての中間ディレクトリを含む) を作成し、その後:
mv yourfile.txt $_
ファイルをそのディレクトリに移動します ($_ は、前のシェル コマンドに渡された最後の引数、つまり新しく作成されたディレクトリに展開されます)。
これが他のシェルでどこまで機能するかはわかりませんが、何を探すべきかについてのアイデアが得られるかもしれません.
この手法を使用した例を次に示します:
$ > 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
mv または 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]"
または、 ~/.bashrc ファイルの最後に、新しい端末ごとにデフォルトの mv を置き換える関数として配置します。関数を使用すると、毎回スクリプト ファイルを読み取る代わりに、bash がメモリを保持できます。
function mv ()
{
dir="$2"
tmp="$2"; tmp="${tmp: -1}"
[ "$tmp" != "/" ] && dir="$(dirname "$2")"
[ -a "$dir" ] ||
mkdir -p "$dir" &&
mv "[email protected]"
}
これらは Chris Lutz の投稿に基づいています。