はじめに
Powershellでファイル一覧を取得するとき
- サブディレクトリ内のファイルも対象に(再帰的に):基本
- ディレクトリは一覧から除外する(ファイルのみ)
- 1行1ファイルで(絶対パス)
- 絶対パスだと長いので相対パスに
- 更新日時も出したい
と、条件を追加していった各段階のコマンドと実行結果例。
確認環境
OS: Windows 10
PowerShellバージョン:以下2種類
- 5.1.19041.4170
- 7.3.4
実行ディレクトリ
サクラエディタのディレクトリで実行した結果を載せてます。
keyword配下が多かったので、少し減らして実行してます。
実行例のカレントディレクトリ
PS > cd -LiteralPath "C:\Program Files (x86)\sakura"
PS > pwd
Path
----
C:\Program Files (x86)\sakura
PS >
コマンドまとめ
1. 再帰的に
Get-ChildItem -Recurse
2. ファイルのみ
Get-ChildItem -Recurse -File
3. 絶対パス
Get-ChildItem -Recurse -File | %{$_.FullName}
4. 相対パス
Get-ChildItem -Recurse -File | %{($_.FullName).Replace((Get-Location).Path,'.')}
4-b. 相対パス2
Get-ChildItem -Recurse -File -Name
5. 更新日時+相対パス
Get-ChildItem -Recurse -File | %{(Get-Date $_.LastWriteTime -Format "yyyy/MM/dd HH:mm:ss") + " " + ($_.FullName).Replace((Get-Location).Path,'.')}
Alias使用時
Aliasとオプションの省略系で少し短くしたコマンド
1. 再帰的に
ls -R
2. ファイルのみ
ls -R -File
3. 絶対パス
ls -R -File | %{$_.FullName}
4. 相対パス
ls -R -File | %{($_.FullName).Replace((pwd).Path,'.') }
4-b. 相対パス2
ls -R -File -Name
5. 更新日時+相対パス
ls -R -File | %{(Get-Date $_.LastWriteTime -Format "yyyy/MM/dd HH:mm:ss") + " " + ($_.FullName).Replace((pwd).Path,'.') }
【参考】
Get-ChildItem の Alias
PS > Get-Alias -Definition Get-ChildItem
CommandType Name Version Source
----------- ---- ------- ------
Alias dir -> Get-ChildItem
Alias gci -> Get-ChildItem
Alias ls -> Get-ChildItem
PS >
Get-Location の Alias
PS > Get-Alias -Definition Get-Location
CommandType Name Version Source
----------- ---- ------- ------
Alias gl -> Get-Location
Alias pwd -> Get-Location
PS >
1. 基本
コマンド
Get-ChildItem -Recurse
実行例
PS > Get-ChildItem -Recurse
ディレクトリ: C:\Program Files (x86)\sakura
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/04/07 23:06 keyword
d----- 2021/07/10 17:28 license
-a---- 2019/01/30 11:42 590848 bregonig.dll
-a---- 2020/01/12 0:11 3387918 ctags.exe
-a---- 2020/05/30 3:08 172071 macro.chm
-a---- 2020/05/30 3:08 60645 plugin.chm
-a---- 2020/05/30 3:08 2572017 sakura.chm
-a---- 2020/05/30 3:10 1654272 sakura.exe
-a---- 2020/05/30 3:09 1021 sakura.exe.ini
-a---- 2020/05/30 3:09 1001 sakura.exe.manifest
-a---- 2020/05/30 3:10 229888 sakura_lang_en_US.dll
-a---- 2021/07/10 17:28 32391 unins000.dat
-a---- 2021/07/10 17:27 1192857 unins000.exe
ディレクトリ: C:\Program Files (x86)\sakura\keyword
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/05/30 3:09 2905 ABAP4.kwd
-a---- 2020/05/30 3:09 10929 ActionScript.kwd
-a---- 2020/05/30 3:09 1222 AHK.col
-a---- 2020/05/30 3:09 13679 AHK.khp
-a---- 2020/05/30 3:09 218 AHK.rkw
-a---- 2020/05/30 3:09 2092 wsh.kwd
-a---- 2020/05/30 3:09 3562 xul-attr.kwd
-a---- 2020/05/30 3:09 1012 xul.kwd
ディレクトリ: C:\Program Files (x86)\sakura\license
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021/07/10 17:28 bregonig
d----- 2021/07/10 17:28 ctags
-a---- 2020/05/30 3:08 949 LICENSE
ディレクトリ: C:\Program Files (x86)\sakura\license\bregonig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/01/30 11:22 5586 bsd_license.txt
-a---- 1999/11/24 2:29 5353 perl_license.txt
-a---- 2006/08/23 15:01 11901 perl_license_jp.txt
ディレクトリ: C:\Program Files (x86)\sakura\license\ctags
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/01/12 0:06 18007 COPYING
-a---- 2020/01/12 0:06 10936 COPYING.MinGW-w64-runtime.txt
-a---- 2020/01/12 0:06 1289 Copyright.libxml2
-a---- 2020/01/12 0:06 1081 LICENSE.janssen
-a---- 2020/01/12 0:06 1058 LICENSE.libyaml
PS >
2. ファイルのみ(ディレクトリごと)
コマンド
Get-ChildItem -Recurse -File
実行例
PS > Get-ChildItem -Recurse -File
ディレクトリ: C:\Program Files (x86)\sakura
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/01/30 11:42 590848 bregonig.dll
-a---- 2020/01/12 0:11 3387918 ctags.exe
-a---- 2020/05/30 3:08 172071 macro.chm
-a---- 2020/05/30 3:08 60645 plugin.chm
-a---- 2020/05/30 3:08 2572017 sakura.chm
-a---- 2020/05/30 3:10 1654272 sakura.exe
-a---- 2020/05/30 3:09 1021 sakura.exe.ini
-a---- 2020/05/30 3:09 1001 sakura.exe.manifest
-a---- 2020/05/30 3:10 229888 sakura_lang_en_US.dll
-a---- 2021/07/10 17:28 32391 unins000.dat
-a---- 2021/07/10 17:27 1192857 unins000.exe
ディレクトリ: C:\Program Files (x86)\sakura\keyword
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/05/30 3:09 2905 ABAP4.kwd
-a---- 2020/05/30 3:09 10929 ActionScript.kwd
-a---- 2020/05/30 3:09 1222 AHK.col
-a---- 2020/05/30 3:09 13679 AHK.khp
-a---- 2020/05/30 3:09 218 AHK.rkw
-a---- 2020/05/30 3:09 2092 wsh.kwd
-a---- 2020/05/30 3:09 3562 xul-attr.kwd
-a---- 2020/05/30 3:09 1012 xul.kwd
ディレクトリ: C:\Program Files (x86)\sakura\license
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/05/30 3:08 949 LICENSE
ディレクトリ: C:\Program Files (x86)\sakura\license\bregonig
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/01/30 11:22 5586 bsd_license.txt
-a---- 1999/11/24 2:29 5353 perl_license.txt
-a---- 2006/08/23 15:01 11901 perl_license_jp.txt
ディレクトリ: C:\Program Files (x86)\sakura\license\ctags
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/01/12 0:06 18007 COPYING
-a---- 2020/01/12 0:06 10936 COPYING.MinGW-w64-runtime.txt
-a---- 2020/01/12 0:06 1289 Copyright.libxml2
-a---- 2020/01/12 0:06 1081 LICENSE.janssen
-a---- 2020/01/12 0:06 1058 LICENSE.libyaml
PS >
3. 絶対パス(1行1ファイル)
コマンド
Get-ChildItem -Recurse -File | %{$_.FullName}
実行例
PS > Get-ChildItem -Recurse -File | %{$_.FullName}
C:\Program Files (x86)\sakura\bregonig.dll
C:\Program Files (x86)\sakura\ctags.exe
C:\Program Files (x86)\sakura\macro.chm
C:\Program Files (x86)\sakura\plugin.chm
C:\Program Files (x86)\sakura\sakura.chm
C:\Program Files (x86)\sakura\sakura.exe
C:\Program Files (x86)\sakura\sakura.exe.ini
C:\Program Files (x86)\sakura\sakura.exe.manifest
C:\Program Files (x86)\sakura\sakura_lang_en_US.dll
C:\Program Files (x86)\sakura\unins000.dat
C:\Program Files (x86)\sakura\unins000.exe
C:\Program Files (x86)\sakura\keyword\ABAP4.kwd
C:\Program Files (x86)\sakura\keyword\ActionScript.kwd
C:\Program Files (x86)\sakura\keyword\AHK.col
C:\Program Files (x86)\sakura\keyword\AHK.khp
C:\Program Files (x86)\sakura\keyword\AHK.rkw
C:\Program Files (x86)\sakura\keyword\wsh.kwd
C:\Program Files (x86)\sakura\keyword\xul-attr.kwd
C:\Program Files (x86)\sakura\keyword\xul.kwd
C:\Program Files (x86)\sakura\license\LICENSE
C:\Program Files (x86)\sakura\license\bregonig\bsd_license.txt
C:\Program Files (x86)\sakura\license\bregonig\perl_license.txt
C:\Program Files (x86)\sakura\license\bregonig\perl_license_jp.txt
C:\Program Files (x86)\sakura\license\ctags\COPYING
C:\Program Files (x86)\sakura\license\ctags\COPYING.MinGW-w64-runtime.txt
C:\Program Files (x86)\sakura\license\ctags\Copyright.libxml2
C:\Program Files (x86)\sakura\license\ctags\LICENSE.janssen
C:\Program Files (x86)\sakura\license\ctags\LICENSE.libyaml
PS >
4. 相対パス
5. 更新日時+相対パス につなげるための相対パス取得コマンド
コマンド
Get-ChildItem -Recurse -File | %{ ($_.FullName).Replace((Get-Location).Path,'.') }
実行例
PS > Get-ChildItem -Recurse -File | %{ ($_.FullName).Replace((Get-Location).Path,'.') }
.\bregonig.dll
.\ctags.exe
.\macro.chm
.\plugin.chm
.\sakura.chm
.\sakura.exe
.\sakura.exe.ini
.\sakura.exe.manifest
.\sakura_lang_en_US.dll
.\unins000.dat
.\unins000.exe
.\keyword\ABAP4.kwd
.\keyword\ActionScript.kwd
.\keyword\AHK.col
.\keyword\AHK.khp
.\keyword\AHK.rkw
.\keyword\wsh.kwd
.\keyword\xul-attr.kwd
.\keyword\xul.kwd
.\license\LICENSE
.\license\bregonig\bsd_license.txt
.\license\bregonig\perl_license.txt
.\license\bregonig\perl_license_jp.txt
.\license\ctags\COPYING
.\license\ctags\COPYING.MinGW-w64-runtime.txt
.\license\ctags\Copyright.libxml2
.\license\ctags\LICENSE.janssen
.\license\ctags\LICENSE.libyaml
PS >
4-b. 相対パス2(参考)
パスが取得できれば他の情報は不要、という場合の取得コマンド
コマンド
Get-ChildItem -Recurse -File -Name
実行例
PS > Get-ChildItem -Recurse -File -Name
bregonig.dll
ctags.exe
macro.chm
plugin.chm
sakura.chm
sakura.exe
sakura.exe.ini
sakura.exe.manifest
sakura_lang_en_US.dll
unins000.dat
unins000.exe
keyword\ABAP4.kwd
keyword\ActionScript.kwd
keyword\AHK.col
keyword\AHK.khp
keyword\AHK.rkw
keyword\wsh.kwd
keyword\xul-attr.kwd
keyword\xul.kwd
license\LICENSE
license\bregonig\bsd_license.txt
license\bregonig\perl_license.txt
license\bregonig\perl_license_jp.txt
license\ctags\COPYING
license\ctags\COPYING.MinGW-w64-runtime.txt
license\ctags\Copyright.libxml2
license\ctags\LICENSE.janssen
license\ctags\LICENSE.libyaml
PS >
5. 更新日時+相対パス
コマンド
Get-ChildItem -Recurse -File | %{ (Get-Date $_.LastWriteTime -Format "yyyy/MM/dd HH:mm:ss") + " " + ($_.FullName).Replace((Get-Location).Path,'.') }
実行例
PS > Get-ChildItem -Recurse -File | %{ (Get-Date $_.LastWriteTime -Format "yyyy/MM/dd HH:mm:ss") + " " + ($_.FullName).Replace((Get-Location).Path,'.') }
2019/01/30 11:42:26 .\bregonig.dll
2020/01/12 00:11:06 .\ctags.exe
2020/05/30 03:08:42 .\macro.chm
2020/05/30 03:08:44 .\plugin.chm
2020/05/30 03:08:46 .\sakura.chm
2020/05/30 03:10:34 .\sakura.exe
2020/05/30 03:09:00 .\sakura.exe.ini
2020/05/30 03:09:00 .\sakura.exe.manifest
2020/05/30 03:10:36 .\sakura_lang_en_US.dll
2021/07/10 17:28:58 .\unins000.dat
2021/07/10 17:27:08 .\unins000.exe
2020/05/30 03:09:00 .\keyword\ABAP4.kwd
2020/05/30 03:09:00 .\keyword\ActionScript.kwd
2020/05/30 03:09:00 .\keyword\AHK.col
2020/05/30 03:09:00 .\keyword\AHK.khp
2020/05/30 03:09:00 .\keyword\AHK.rkw
2020/05/30 03:09:00 .\keyword\wsh.kwd
2020/05/30 03:09:00 .\keyword\xul-attr.kwd
2020/05/30 03:09:00 .\keyword\xul.kwd
2020/05/30 03:08:58 .\license\LICENSE
2019/01/30 11:22:14 .\license\bregonig\bsd_license.txt
1999/11/24 02:29:36 .\license\bregonig\perl_license.txt
2006/08/23 15:01:00 .\license\bregonig\perl_license_jp.txt
2020/01/12 00:06:40 .\license\ctags\COPYING
2020/01/12 00:06:42 .\license\ctags\COPYING.MinGW-w64-runtime.txt
2020/01/12 00:06:42 .\license\ctags\Copyright.libxml2
2020/01/12 00:06:42 .\license\ctags\LICENSE.janssen
2020/01/12 00:06:42 .\license\ctags\LICENSE.libyaml
PS >
参考
リファレンス