如何使用PowerShell执行ls
?
for i in `ls`
do
if [ -d $i ] #miro si és directori
then
echo "Directory"
else echo "File"
fi
done
POWERSHELL
$llistat -ls
forEach $element in $llistat ??? this is possible
}
答案 0 :(得分:1)
更多的PoSh方法是使用管道,也许是哈希表:
$type = @{
$true = 'Directory'
$false = 'File'
}
Get-ChildItem | ForEach-Object { $type[$_.PSIsContainer] }
PowerShell甚至为alias提供了默认的Get-ChildItem
ls
,因此您可以使用更多的Unix- ish 语法:
ls | % { $type[$_.PSIsContainer] }
答案 1 :(得分:0)
在PowerShell中,Get-ChildItem
cmdlet的工作方式与ls
类似(至少与文件系统提供程序一样)。返回的所有项目都有一个名为PSIsContainer
的特定于PowerShell的属性,指示它是否是目录:
foreach($item in (Get-ChildItem)){
if($item.PSIsContainer){
"Directory"
} else {
"File"
}
}
如果你想查看每个目录中的内容,可以向下一级:
foreach($item in (Get-ChildItem)){
if($item.PSIsContainer){
# Directory! Let's see what's inside:
Get-ChildItem -Path $item.FullName
}
}
从PowerShell 3.0及更高版本开始,Get-ChildItem
支持文件系统提供程序上的File
和Directory
开关,因此如果您只需要目录,则可以执行以下操作:
Get-ChildItem -Directory
所以第二个例子变成了:
Get-ChildItem -Directory | Get-ChildItem
您还可以递归列出文件(如ls -R
):
Get-ChildItem -Recurse