質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

Q&A

解決済

1回答

461閲覧

違う時間帯で撮影された画像を日付ごと一枚にしたい

momokoko

総合スコア38

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

0グッド

1クリップ

投稿2020/05/25 14:45

編集2020/05/25 14:48

環境:bash,catalina

Apple-no-MacBook-Pro-3:movieGDRIVE apple$ ls -1 cham-arayaminami-high 2020年02月24日01時02分.jpg 2020年02月24日12時02分.jpg 2020年02月25日01時02分.jpg 2020年02月25日12時02分.jpg 2020年02月26日01時02分.jpg 2020年02月26日12時02分.jpg

上記のようなファイル群があるのですが、2020年02月24日なら2020年02月24日12時02分.jpg1枚のみに間引きたいです。検索してもそれらしいものがヒットしませんでした。
ご教授いただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/05/25 15:10

遅い時間のを残すということでいいのかな?
momokoko

2020/05/25 15:14

どちらでも大丈夫です!
guest

回答1

0

ベストアンサー

もっと美しい書き方がありそうですが

bash

1ls -1 | uniq -w 14 | xargs cp -t destdir

-w 14 は文字コード依存ですね。

追記)uniqに -w が無い場合

Macのuniqには -w が無いそうで…
かなり無理矢理ですが…

bash

1ls -1 | awk '{print substr($0, 15) " " substr($0, 0, 15)}'|uniq -f 1|awk '{print $2 $1}' | xargs cp -t destdir

これでどうでしょうか。

追記)uniqを使わない場合

awkだけで無理やりやるとこんな感じです。(xargsはhidezzzさんのアドバイスより)

bash

1ls -l | awk 'NR==1{h=substr($0, 0, 15);print} NR!=1 && substr($0, 0, 15)!=h{h=substr($0, 0, 15);print}' | xargs -I@ cp @ destdir 2

投稿2020/05/25 22:27

編集2020/05/26 14:17
x98000

総合スコア1096

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momokoko

2020/05/26 05:24

回答ありがとうございます。 ls -1|uniq -w 14| xargs cp testdir uniq: illegal option -- w usage: uniq [-c | -d | -u] [-i] [-f fields] [-s chars] [input [output]] となってしまいました。 -wは一つ目の項目でしかできないらしいですね。 文字コード依存というのが調べてもわかなかったのですが、お時間あったら教えていただけると嬉しいです。
x98000

2020/05/26 06:59

えっ、uniqに -w が無いですか。OSとバージョン教えて下さい。
x98000

2020/05/26 07:45

Macのuniqには -w オプションが無いらしいですね…
momokoko

2020/05/26 12:20

macOS catalinaで10.15.4です。 ls -1 | awk '{print substr($0, 15) " " substr($0, 0, 15)}'|uniq -f 1|awk '{print $2 $1}' | xargs cp -t momo cp: illegal option -- t usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
momokoko

2020/05/26 12:21

cpコマンドにエラーが出てしまいました。 -tがないパターンや-Tを試してみましたが同様のエラーが出ました。
hidezzz

2020/05/26 13:01

最後を「xargs cp -t destdir」→「xargs -i@ cp @ destdir」とすれば良いと思います。 (cpコマンドがたくさん呼ばれる分効率は悪くなります。)
momokoko

2020/05/26 13:25

ありがとうございます。 試してみましたが ls -1 | awk '{print substr($0, 15) " " substr($0, 0, 15)}'|uniq -f 1|awk '{print $2 $1}' | xargs -i@ cp @ momo/ xargs: illegal option -- i usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr] [-L number] [-n number [-x]] [-P maxprocs] [-s size] [utility [argument ...]] とエラーが出ました。
hidezzz

2020/05/26 13:27

「xargs -I@ cp @ destdir」(大文字のIオプション)でどうでしょうか…?
hidezzz

2020/05/26 13:32

それでダメなら「xargs -J@ cp @ destdir」(大文字のJオプション)でどうでしょうか…? Macが無くて試せないのでお手数おかけします。
momokoko

2020/05/26 14:29

とんでもないです。 ls -1 | awk '{print substr($0, 15) " " substr($0, 0, 15)}'|uniq -f 1|awk '{print $2 $1}' |xargs -I@ cp @ momo/ cp: 2020年02月27日09時113分.jpg: No such file or directory Jオプションでも同様の出力結果でした。 cp: 2020年02月28日01時006分.jpg: No such file or directory cp: 2020年02月28日09時557分.jpg: No such file or directory cp: 2020年02月28日10時000分.jpg: No such file or directory cp: 2020年02月28日12時002分.jpg: No such file or directory cp: 2020年02月29日01時002分.jpg: No such file or directory cp: 2020年02月29日12時002分.jpg: No such file or directory cp: 2020年03月01日01時002分.jpg: No such file or directory
x98000

2020/05/26 14:41

うーん macOS… これで動かしてみてください。 ls -1 | awk '{print substr($0, 15) " " substr($0, 0, 15)}'|uniq -f 1|awk '{print $2 $1}' |xargs -I {} cp {} momo/
hidezzz

2020/05/26 14:50

> cp: 2020年02月27日09時113分.jpg: No such file or directory 分の数字部分が3桁になってしまってますね。 xargsに来る前のほうがなんかおかしい気がします。
x98000

2020/05/26 15:08

うーん、byte数も違うか…macOS検証出来ない… amazon_106106さん、上に追記したuniqを使わない場合も試してもらえませんか
hidezzz

2020/05/26 15:09

年から時の文字数は14文字なので、こうかなぁ ls -1 | awk '{print substr($0, 15) " " substr($0, 0, 14)}'|uniq -f 1|awk '{print $2 $1}' |xargs -I {} cp {} momo/
hidezzz

2020/05/26 15:11

そうですね。パイプ「|」単位でコマンドを外していって確認してどこで間違っているか見るのが良いですね。
hidezzz

2020/05/26 15:40

substrはきちんとマルチバイト文字を1文字と認識しているようなので、 ls -1 *.jpg |awk '{print substr($0, 12) " " substr($0, 1, 11)}' |uniq -f 1|awk '{print $2 $1}' |xargs -I{} cp {} momo/ ですかね。 ダメなら次の4つのコマンドの結果を教えてください。 ls -1 *.jpg |awk '{print substr($0, 12) " " substr($0, 1, 11)}' ls -1 *.jpg |awk '{print substr($0, 12) " " substr($0, 1, 11)}' |uniq -f 1 ls -1 *.jpg |awk '{print substr($0, 12) " " substr($0, 1, 11)}' |uniq -f 1|awk '{print $2 $1}' ls -1 *.jpg |awk '{print substr($0, 12) " " substr($0, 1, 11)}' |uniq -f 1|awk '{print $2 $1}' |xargs -I{} echo cp {} momo/
hidezzz

2020/05/26 15:42

あ、明日でいいですw
momokoko

2020/05/27 00:38

ls -1 *.jpg |awk '{print substr($0, 12) " " substr($0, 1, 11)}' |uniq -f 1|awk '{print $2 $1}' |xargs -I{} cp {} momo/ おはようございます! 上記のコマンドでうまく行きました! ls -1 momo/ 2020年02月27日09時13分.jpg 2020年02月28日01時06分.jpg 2020年02月29日01時02分.jpg 2020年03月01日01時02分.jpg 2020年03月02日01時02分.jpg 2020年03月03日01時02分.jpg 2020年03月04日01時02分.jpg 2020年03月05日01時02分.jpg 上記のようなフォルダが70個あり、計9000枚の画像があったので、このコマンドがなければバイトの方と手作業で削除しようと思っていました。 本当にありがとうございました!
x98000

2020/05/27 00:42

よかったです。コメントありがとうございます。悩んだ甲斐がありました。 hidezzzさんもフォローありがとうございました。
hidezzz

2020/05/27 02:12

無事解決して良かったです。
momokoko

2020/05/27 06:47

お二人のおかげで本当に助かりました。 弊社一同感謝しております!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問