ディレクトリ1に以下のようなファイルがあります。
"file01_05_aa.jpg"
"file01_05_bb.jpg"
"file01_05_cc.jpg"
"file21_04_aa.jpg"
"file21_04_bb.jpg"
"file21_04_cc.jpg"
"file31_03_aa.jpg"
"file31_03_bb.jpg"
"file31_03_cc.jpg"
これらのファイル形式は
(file)(XX)_(XX)_(XX).jpg
これらの中からこの正規表現でヒットするファイルのみ指定した別ディレクトリにコピーしたいです。
file\d\d_(05|03)_(aa|cc)\.jpg
Windowsのコマンドプロンプトで実現可能でしょうか。可能であればコマンド列を教えてください。
(cygwinでも良いです。)
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
cygwinを使ってもいいのであれば
$ cp `ls --color=no | egrep -e '正規表現'` コピー先
で行けると思われます。
シングルクォート(')とバッククォート(`)の違いに注意。
No.4
- 回答日時:
この質問の条件程度なら正規表現を使わずに判定できますので、バッチファイルで実現することも可能でしょう。
ただし、他の方の指摘通り、cygwin やスクリプト言語が使えるなら、そちらの方がはるかに楽だと思われます。
下記はバッチファイルのみで実現した例です。
----------------------------------------
@ECHO OFF
FOR %%F IN (dir1\*) DO CALL :EXEC_COPY %%~nxF
GOTO :EOF
:EXEC_COPY
SET FNAME=%1
IF NOT %FNAME:~0,4%==file GOTO :EOF
SET NUM1=%FNAME:~4,2%
IF DEFINED NUM1 SET NUM1=%NUM1:0=%
IF DEFINED NUM1 SET NUM1=%NUM1:1=%
IF DEFINED NUM1 SET NUM1=%NUM1:2=%
IF DEFINED NUM1 SET NUM1=%NUM1:3=%
IF DEFINED NUM1 SET NUM1=%NUM1:4=%
IF DEFINED NUM1 SET NUM1=%NUM1:5=%
IF DEFINED NUM1 SET NUM1=%NUM1:6=%
IF DEFINED NUM1 SET NUM1=%NUM1:7=%
IF DEFINED NUM1 SET NUM1=%NUM1:8=%
IF DEFINED NUM1 SET NUM1=%NUM1:9=%
IF DEFINED NUM1 GOTO :EOF
IF NOT %FNAME:~6,1%==_ GOTO :EOF
SET NUM2=%FNAME:~7,2%
IF %NUM2%==03 GOTO OK_1
IF %NUM2%==05 GOTO OK_1
GOTO :EOF
:OK_1
IF NOT %FNAME:~9,1%==_ GOTO :EOF
SET STR1=%FNAME:~10,2%
IF %STR1%==aa GOTO OK_2
IF %STR1%==cc GOTO OK_2
GOTO :EOF
:OK_2
IF NOT %FNAME:~12%==.jpg GOTO :EOF
COPY /-Y dir1\%FNAME% dir2\
GOTO :EOF
----------------------------------------
なお、DOSコマンドにも正規表現が使える findstr がありますが、(~~~) や | が使えないようなので、この質問のケースで利用するのは難しいと思われます。
No.2
- 回答日時:
Windowsのコマンドプロンプトは、正規表現をサポートしていないので無理です。
cygwin の bashもダメだと思います。tcsh ならいけたような気がします。
しばらくやってないので、忘れちゃいました。
自分だったら、perl でスクリプト書いちゃうかな。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- リフォーム・リノベーション 壁紙について 5 2022/10/19 12:09
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- リフォーム・リノベーション ベランダの目隠しのポリカーボネートの施工について 2 2022/07/28 17:20
- DIY・エクステリア ポストの取り付け方法について 7 2022/05/22 05:42
- 電気・ガス・水道 ガス栓が回らない 7 2022/09/30 22:05
- iOS ファイルの名前変更 2 2022/08/11 20:47
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- その他(アニメ・マンガ・特撮) 松?の木について 3 2022/06/26 15:38
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAコードを張り付け後のエクセ...
-
AutoNts
-
フォルダ内のファイルを全て開...
-
csvファイルの横方向への改行に...
-
fortranのopen文について。
-
Firefox で file:// で始まる U...
-
MATLABのm-fileについて
-
drtファイルはどうしたら開...
-
ファイルの存在の有無を確かめ...
-
並び方、
-
fopen64について
-
fgets で値が取得できない
-
重複ファイル名ある場合ファイ...
-
VBAでCSVファイルを途中行まで...
-
バッチファイルの作り方(CSV→...
-
close()で例外が投げられる理由
-
batファイルでrenameができませ...
-
VBAでCSVファイルの特定行を書...
-
openした後、closeしないでプロ...
-
ListBoxのデータを高速でファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.open でのファイル指定方法
-
csvファイルの横方向への改行に...
-
python renameについて
-
VBAコードを張り付け後のエクセ...
-
ファイルの存在の有無を確かめ...
-
行を指定して削除する方法PERL
-
VBA テキストファイルを読み取...
-
ファイル全てを .xlsm に変更し...
-
Firefox で file:// で始まる U...
-
fgets で値が取得できない
-
perl ファイルが開かない
-
MATLABのm-fileについて
-
Perl の「stringify」の意味に...
-
PerlでのUseless use...
-
JSP URLに表示される拡張子 .jsp
-
巨大なテキストの最終行を取得...
-
複数ファイルを1つにするシェ...
-
drtファイルはどうしたら開...
-
fopen64について
-
perlで画像をダウンロードしよ...
おすすめ情報