前提・実現したいこと
macOSでターミナル(UNIX)を使っています
複数ファイルの一括リネームがしたくてgoogle先生に教わりながらこのコマンドにたどり着いたのですが、以下のエラーが出ます
mvコマンドの入力がないという警告だと思うのですが、解決法がわからず…
find [Directory] -type f | sed 's/A/B/pg' | xargs mv -i
発生している問題・エラーメッセージ
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
試したこと
google先生に頼りました
初心者すぎてすみません
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
たとえばこのようなshell script (./hoge.sh) を作成して、
bash
1#!/bin/bash 2 3source=$1 4target=$(echo $source | sed -e 's/年/-/g' -e 's/月/-/g' -e 's/日//g' -e 's/ //g' -e 's/ //g) 5if [[ ${target} -ne ${source} ]]; then 6 mv ${source} ${target} 7fi
こうすればどうですか?
bash
1find [Directory] -type f -exec ./hoge.sh {} \;
ただし、フォルダに 年、月などがはいっていないことが条件ですけれども。
投稿2018/10/01 14:14
総合スコア1088
0
ベストアンサー
mv 元のファイル名 新しいファイル名
です。
Bash
1find [Directory] -type f | while read file; do mv -i </dev/tty $file ${file//A/B};done
ディレクトリ以下の全てのファイルについて、リネームしてしまいますが、大丈夫でしょうか?
まずは、
Bash
1find [Directory] -type f | while read file; do echo mv -i $file ${file//A/B};done
のようにecho
で確認してください。
また、「ファイル名中の全てのA
をB
に変える」のでなく、「ファイル名中の最初のA
をB
に変える」でいいなら、rename
コマンドが使えます。-n 1 -p
は1ファイルずつ確認するためのオプションです。
Bash
1find [Directory] -type f | xargs -n 1 -p rename A B
#追記
"yyyy年mm月dd日"という書式でネーミングされているものを"yyyy-mm-dd"に変えたいのです。
そして、"yyyy年mm月dd日あああ"のような無駄な文字列をまとめて削除すべく、先頭から10文字以外を削除するコマンドがあればそれも付け加えたいです。
Bash
1find [Directory] -type f | while read f;do mv -i </dev/tty $f ${f:0:4}-${f:5:2}-${f:8:2};done
#訂正
追記のスクリプトは間違っています。コメント参照。コメントに書いたことで解決したようですが、こちらも訂正しておきます。
Bash
1find [Directory] -type f | while read file 2do 3 dir=${file%/*} 4 name=${file##*/} 5 mv -i </dev/tty "$file" "$dir/${name:0:4}-${name:5:2}-${name:8:2}" 6done
投稿2018/09/30 14:59
編集2018/10/02 12:17総合スコア84555
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/01 13:54
2018/10/01 13:56
2018/10/01 15:31
2018/10/01 15:35
2018/10/02 02:14
2018/10/02 04:18
2018/10/02 12:37 編集
2018/10/02 12:10
2018/10/02 12:37
2018/10/02 13:09
2018/10/02 13:39
2018/10/02 14:09
2018/10/03 03:49
0
find [Directory] -type f | sed 's/A/B/pg'
この部分だけ実行すると、ディレクトリ以下のファイルで名前が Aを Bに変換したもののリストがでると思います。mv コマンドで名前を変換するには、変換前と変換後の2つが必要ですので適切ではないと思います。
ググルとこのような情報がありましたので参考にしてください。
http://uguisu.skr.jp/Windows/find_xargs2.html
またはどのように変更したいのかを具体的に説明してください。
投稿2018/09/30 14:23
総合スコア1088
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/01 13:32
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/03 03:51