有人可以将这两个脚本从 MKS 翻译成 Powershell 吗?我想从我们的 ETL 工具中删除 MKS 并使用 Powershell 完成此操作,但没有排骨
1) 文件大小=ls -l $1 | awk '{print $5}'
如果 [ $FileSize -ge 100000000 ]; 然后拆分 -b 60000000 $1 $1 fi
2) 查找 $1 -type f -name *.txt -mtime +30 -exec rm {} \;
非常感谢画了
有人可以将这两个脚本从 MKS 翻译成 Powershell 吗?我想从我们的 ETL 工具中删除 MKS 并使用 Powershell 完成此操作,但没有排骨
1) 文件大小=ls -l $1 | awk '{print $5}'
如果 [ $FileSize -ge 100000000 ]; 然后拆分 -b 60000000 $1 $1 fi
2) 查找 $1 -type f -name *.txt -mtime +30 -exec rm {} \;
非常感谢画了
避免在此处使用标准别名(例如,可以使用dir
orls
而不是Get-ChildItem
):
1) 文件大小=ls -l $1 | awk '{打印 $5}'
$filesize = (Get-ChildItem $name).Length
如果 [ $FileSize -ge 100000000 ]; 然后拆分 -b 60000000 $1 $1 fi
if ($filesize -ge 100000000) { ... }
(无法回忆 的功能split
)
2) 查找 $1 -type f -name *.txt -mtime +30 -exec rm {} \;
$t = [datetime]::Now.AddSeconds(-30)
Get-ChildItem -path . -recurse -filter *.txt |
Where-Object { $_.CreationTime -gt $t -and $_.PSIsContainer } |
Remove-Item
(在不删除的情况下添加一个-whatif
以Remove-Item
列出将被删除的内容。)
1)获取以 . 命名的文件的大小$1
。如果大小超过 100 兆字节,split
则将其分成每个 60 兆字节的部分。
MKS
FileSize=`ls -l $1 | awk '{print $5}'`
if [ $FileSize -ge 100000000 ]; then
split -b 60000000 $1 $1
fi
电源外壳
function split( [string]$path, [int]$byteCount ) {
# Find how many splits will be made.
$file = Get-ChildItem $path
[int]$splitCount = [Math]::Ceiling( $file.Length / $byteCount )
$numberFormat = '0' * "$splitCount".Length
$nameFormat = $file.BaseName + "{0:$numberFormat}" + $file.Extension
$pathFormat = Join-Path $file.DirectoryName $nameFormat
# Read the file in $byteCount chunks, sending each chunk to a numbered split file.
Get-Content $file.FullName -Encoding Byte -ReadCount $byteCount |
Foreach-Object { $i = 1 } {
$splitPath = $pathFormat -f $i
Set-Content $splitPath $_ -Encoding Byte
++$i
}
}
$FileSize = (Get-ChildItem $name).Length
if( $FileSize -gt 100MB ) {
split -b 60MB $name
}
注意:仅实现了问题所需的拆分功能,并且仅在小文件大小上进行了测试。您可能想要研究StreamReader
并StreamWriter
执行更有效的缓冲 IO。
2)将目录下的30 天前修改过的所有扩展名的$1
常规find
文件删除。.txt
MKS
find $1 -type f -name *.txt -mtime +30 -exec rm {} \;
电源外壳
$modifiedTime = (Get-Date).AddDays( -30 )
Get-ChildItem $name -Filter *.txt -Recurse |
Where-Object { $_.LastWriteTime -lt $modifiedTime } |
Remove-Item -WhatIf
注意:取下-WhatIf
开关,实际执行删除操作,而不是预览。