カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

Windowsでもfindでファイル検索したい

コマンドでファイル検索したいとき、Linuxみたいにfindコマンドが使えたらなぁ・・と思うことがあります。
エクスプローラーで検索すればそれまでなんですが、コマンドでやりたいときがあります。

そこで見つけたのがPowerShellのGet-ChildItemコマンドです。
findに似た動作をしてくれるので試してみました。

構文はこんな感じです。

Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>]  [<CommonParameters>]

このコマンドにはエイリアスが設定されており、gcilsdirでも使えます。

例)ドキュメントから拡張子.txtのファイルをサブディレクトリも含めて探す

Get-ChildItem -Path "C:\Users\user\Documents" -Filter "*.css" -Recurse -Name -File
オプション
  • -Path
    検索するフォルダー(ディレクトリ)を指定します。
  • -Filter
    検索条件指定
  • -Recurse
    サブフォルダー(サブディレクトリ)も含めて検索
  • -Name
    結果表示にファイルのパスだけを表示する
  • -File
    検索対象をファイルのみに設定

詳しくは公式ドキュメントをご参照ください。
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7.2&viewFallbackFrom=powershell-6

2,175 views

JavaScriptで配列の値を合計する

JavaScriptにもPHPのarray_sumみたいな関数があったらな~とずっと思っていました。
ふとまた調べているとそれに近しい感じに出来るメソッドがあったのでご紹介します。

とりあえず配列を用意

const nums = [12, 23, 35, 41, 56, 64, 77];

関数を使った普通のやり方

const sum = function(nums) {
	let total = 0;
	for (let i = 0, len = nums.length; i < len; i++) total += nums[i];
	return total;
};

const total = sum(nums);

console.log({total});

ちなみに出力結果はこの通り

{ total: 308 }

そして調べていて発見したのがArray.reduceメソッドです。
書式:配列名.reduce( コールバック関数(結果の値, 要素の値), [初期値] )
初期値は省略可です。
続きを読む…»

9,583 views

コールバック関数でスコープ外の変数を使う

配列の各要素に対して処理を行いたいとき、コールバック関数を使います。

コードの例を見ていきましょう。

$data = [ 1, 2, 3 ];

$data = array_map(function($i) {
    return $i * 2;
}, $data );

print_r($data);

出力結果

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
)

次に、各要素に掛ける数値を外部で変数として宣言します。
それだけだとコールバック関数の中で使用することは出来ませんのでuseを使います。

$data = [ 1, 2, 3 ];
$n = 2;

$data = array_map(function($i) use ($n) {
    return $i * $n;
}, $data );

print_r($data);

同じ出力結果が得られます。

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
)

他に2次元の連想配列に対して任意のデータを一括で追加することも出来ます。
続きを読む…»

1,912 views

配列内のオブジェクトから指定したプロパティを削除

配列化したオブジェクトの中から指定したプロパティだけを削除する方法。

fruits = [
    {
        name: "apple",
        color: "red",
        quantity: 3,
    },
    {
        name: "orange",
        color: "orange",
        quantity: 6,
    },
    {
        name: "grape",
        color: "purple",
        quantity: 10,
    }
];

ログを出力して中身を確認します。

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red', quantity: 3 },
    { name: 'orange', color: 'orange', quantity: 6 },
    { name: 'grape', color: 'purple', quantity: 10 }
  ]
}

forEachdeleteを使ってquantityプロパティを削除します。

fruits.forEach(element => delete element.quantity);

ログを出力して中身を確認しましょう。

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red' },
    { name: 'orange', color: 'orange' },
    { name: 'grape', color: 'purple' }
  ]
}

quantityプロパティだけが削除されました。

プロパティを追加する

先ほどとは逆に、配列化したオブジェクトにプロパティを追加してみましょう。

元のオブジェクト配列

fruits = [
    {
        name: "apple",
        color: "red",
    },
    {
        name: "orange",
        color: "orange",
    },
    {
        name: "grape",
        color: "purple",
    }
];

追加するオブジェクト配列

quantities = [
    {
        quantity: 3
    },
    {
        quantity: 6
    },
    {
        quantity: 10
    }
];

forEachObject.assignを使ってquantityプロパティを追加します。

fruits.forEach((element, index) => Object.assign(element, quantities[index]));

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red', quantity: 3 },
    { name: 'orange', color: 'orange', quantity: 6 },
    { name: 'grape', color: 'purple', quantity: 10 }
  ]
}
2,220 views

PowerShellでハッシュ値を確認

Linuxにはmd5sum等、ハッシュ値を確認するコマンドがありますが、Windows PowerShellでは使えません。
その代わり、get-filehashがありますので、それを使いましょう。(PowerShell ver4以降)

> get-filehash <file>

結果

MD5などアルゴリズムを指定する場合

> get-filehash -algorithm md5 <file>

結果

1,635 views