読者です 読者をやめる 読者になる 読者になる

min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

bash 深いディレクトリパスの最深部フォルダ名だけを取り出してmvする

 日常的に使うファイル移動で、深いPATHにあるフォルダを移動するときに、できるだけラクしたい。コマンド(ワンライナー)で最深部のフォルダ名を取り出して変数toに入れて使えば便利そう。

 

$ ls /media/3TB/Dropbox | grep Jobs_Seiko

f:id:min117:20170311101522p:plain

深いパス:/media/3TB/Dropbox/Jobs_SeikoWristwatch_Circa1980s

取り出し:Jobs_SeikoWristwatch_Circa1980s

ーーー

$ for i in  /media/3TB/Dropbox/Jobs_SeikoWristwatch_Circa1980s/; do echo "$i"; echo `basename "$i"`; done

f:id:min117:20170311101624p:plain

ーーー

取り出し部分を 変数to に入れてみたけど、コマンド実行をバッククオートの重ねにするとうまくいかないみたい。

$ for i in /media/3TB/Dropbox/Jobs_SeikoWristwatch_Circa1980s/; do echo "$i"; to=`echo `basename "$i"``; echo "$to"; done

f:id:min117:20170311102217p:plain

ーーー

コマンド実行をドル記号による重ねにしたらうまくいった。

$ for i in /media/3TB/Dropbox/Jobs_SeikoWristwatch_Circa1980s/; do echo "$i"; to=$(echo $(basename "$i")); echo "$to"; done

f:id:min117:20170311102437p:plain

ーーー

これで mv できる。

for i in /media/3TB/Dropbox/Jobs_SeikoWristwatch_Circa1980s/; do echo "$i"; to=$(echo $(basename "$i")); echo "$to"; mv "$i" ./20170311_"$to"; done

f:id:min117:20170311102628p:plain