0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ターミナルでファイルをコピーしてフォルダごとに分ける

Posted at

授業の資料を複製

Keynoteを章立て分コピーしてフォルダ内に分けるというのを手作業でやるには現実的ではなかったので、ターミナルを使ってやる事に。

やりたかったのは、

  • 文字列操作
  • 繰り返し複製&フォルダ分け
  • 指定フォルダに移動
    といったところだったが、何せなんちゃってCUI慣れしている状態だったので、そこそこの期間を要したのはここだけの話(白目)
    最終的なコマンドは以下の内容になったので、備忘録的に記しておく。
for var in `ls *.key`
do
 mkdir ${var%.*}

 for i in {1..5}
  do
      cp $var ${var%.*}_0$i.key
 done
rm $var
 for i in {1..5}
  do
   mv ${var%.*}_0$i.key ${var%.*}/${var%.*}_0$i.key
 done

done

文字列操作

ターミナルで文字列操作をするという事が今までなく、その機会があっても手作業で逃げられるところは逃げてしまっていた次第で。改めて文字列操作と、その確認方法を復習。

デバック

echo

編集した文字列を確認したい場合を先に記しておくと、echoというコマンドを覚えておく。
これは、結果をそのままターミナルに表記するので、文字列操作の確認時はまず必要な機能にはなってくる。
…ここに辿り着くにもそこそこ時間がかかったのもここだけの話(白目)

script

結果をテキストに保存するという事も可能。
$ script sample.txtで、テキストファイルに書き出し、exitで書き出し終了という流れで使える。自分の場合は、基本cdでディレクトリ指定して作業するので、書き出されるテキストファイルはそのディレクトリに保存されてる。

自分の使い方としては、ffmpegの書き出し結果が毎度見切れる&見づらいので、テキストに出力するようにしている。

参考記事
https://qiita.com/mihooo24/items/d67c2b14729dfaefa1a8

拡張子を消す

ディレクトリを作るために、ファイル名を抽出する。
ここはKeynoteの〜.keyを消したいところなので、.で分割しようと思う。
${var%.*}

参考記事
https://qiita.com/aosho235/items/c36568830a8d47288284

繰り返しの複製&フォルダ分け

繰り返しの作業はfor文を使用したのだが、連番をファイル名に入れるのに頭に番号がついてしまうとカリキュラムごとにまとめるのが面倒に。
なので、ファイル名の後に連番を付与するとする。

ファイル名と拡張子の間に連番を付与して複製

ファイルの複製はcpコマンドを使用。
cd <複製する元ファイル> <複製後のファイル名>という書き方になる。

ここで、ファイル名と拡張子の間に連番を入れるという部分をまとめる。

 for i in {1..5}
  do
      cp $var ${var%.*}_0$i.key
 done

元々for文で繰り返し作業をするのだが、i の部分に繰り返し番号の整数が入るようになっているので、これを使用する前提とする。1番目のループということで、1を使いたかったら$iと書けば、1番目のループで1という整数が使える。

文字列の連結に関しては、$~で変数を使用する事ができるが、文字の結合に関しては、C#などの記法+などは不要となり、そのままつなげてしまって良いようだ。

これはフォルダ名を付けるための文字列操作と同じコマンドなのだが、ファイル名の定義なので、連番の後に分割してしまった拡張子を付け直す必要がある。それが〜.keyの部分になる。

指定フォルダに移動

ファイルの移動に関しては、冒頭のファイル名を使用したmkdirで作成されたディレクトリに、連番付与されたファイルをmvコマンドを使って移動させる。

mv <元のファイル名> <移動先ディレクトリ名&ファイル名>
ここで注意しないといけないのが、連番を付与したファイル名を再定義する事と、ファイル名をディレクトリとしたので、もう一度ディレクトリ名を定義しないといけないという点&ファイル名も再定義する必要があるという事。
基本前に使ったコマンドをコピペする形で再定義は可能。

 for i in {1..5}
  do
   mv ${var%.*}_0$i.key ${var%.*}/${var%.*}_0$i.key
 done

以上がターミナルでファイルをコピーするコマンド一覧になります。
もうちょっとでターミナルに慣れてきた感あるぜ…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?