犬ターネット

wgetでクロールした際にファイル名に余計なクエリストリングがついてしまうので一括リネームしたい

2011-06-06 wget

Webサーバやアプリケーションの設定でリンクに

してると、wgetでクロールした際にファイル名にまで

といった具合にクエリストリングがついてしまう。邪魔。

なので、一括リネームするワンライナーコマンドを...書きたかった...けど...途中まで考えて嫌になったのでsystemコマンド+PHPで処理した。

<?php
$base_dir = '/path/to/';
$cmd = 'find ' . $base_dir . ' -type f -regex ".*\.\(html\|jpg\|gif\|txt\|css\)\?.*$" -print0 | xargs -0 ls';
$path_list = explode("\n", shell_exec($cmd));
foreach ( $path_list as $path ) {
if ($path !== '') {
$rename_path = preg_replace("/\?.*$/u", '', $path);
rename($path, $rename_path);
}
}
view raw gistfile1.aw hosted with ❤ by GitHub

findコマンドで指定ディレクトリ配下の html, jpg, gif, txt, css ファイルパス一覧を取得して、「?なんたら」がファイル名に含まれていたらその部分を削除リネーム。

こういうのをサクッとワンライナーで書けるようになりたいれす(´ω`)


≪ 2011-06-06
キルマンデーズのテーマ

2011-06-04 ≫
Jakszyk. Fripp And Collinsm, あら恋