我可以将 Windows 中许多单独的子目录/文件夹中的多个文件批量移动到一个主目录中吗?

我可以将 Windows 中许多单独的子目录/文件夹中的多个文件批量移动到一个主目录中吗?

我在如下位置有大量文件:

C:/Users/(Username)/Desktop/(Parent-Collection name)/(filename1)/(filename1).ext

.../(filename2)/(filename2).ext

.../(filename3)/(filename3).ext

我正在尝试将.ext文件批量移动到父文件夹,因此:

C:/Users/(Username)/Desktop/(Parent-Collection name)/(filename1).ext

本质上消除了对子文件夹的需要,就像从学校活页夹中取出分隔符一样。

答案1

你可能必须这样做赛格威,我向所有(仍然??)运行 M$ Windoze 间谍软件的人推荐它。

类似这样的操作应该可以工作。在目录中执行它C:/Users/(Username)/Desktop/(Parent-Collection name)/(在 cygwin 中将被称为/cygdrive/c/Users/(Username)/Desktop/(Parent-Collection name)/)

for i in `find . -name "*" -type f`; 
    do mv $i `echo $i | sed 's/.*\/\([^/]*\)/\1/'`; 
done

这会将下面所有目录中的所有文件移动到(Parent-Collection name)(Parent-Collection name)具体来说,这是一个do循环,索引循环i遍历从当前目录向下的每个文件。这就是find命令列出的内容。您可以通过运行 来查找语法。然后您执行的操作是将该文件man find( ) 移动到新位置。该新位置由原始文件名 ( ) 指定,该文件名通过流编辑器 ( ,您可以使用 查找) 运行,该编辑器设置为剥离路径,保留基本文件名。mv$iecho $isedman sed

我建议对其进行测试(创建一个目录,其中包含几个包含一些空文本文件或某些内容的子目录)并确保进行备份!

然后您可能想要删除当前目录下的所有(现在为空的)目录:

for i in `find . -name "*" -type d`; 
    do rmdir $i; 
done

这里唯一不同的是,您要find查找目录(-type d)而不是文件(-type f),然后删除这些目录(rmdir,这仅适用于空目录)。

Linux 不是很酷吗?Cygwin 为您提供了 Linux 的一些功能,这可能是让您足够熟悉 Linux 的第一步,也许有一天您甚至会发现自己可以转向像 Ubuntu 这样的系统。:)

答案2

虽然我们不知道您使用的是哪个版本的 Windows,但这可以通过 Powershell 来完成。

$sourcefolder = "C:\Users\username\Desktop\ParentCollectionName"

$allfiles = Get-ChildItem -Recurse $sourcefolder | Where-Object {$_.PSIScontainer -eq $false}
ForEach ($file in $allfiles)
    {
        $destinationfolder = Split-Path -Parent $file.Directory.FullName
        Move-Item $file.FullName $destinationfolder
    }

子目录中的所有文件$sourcefolder都将移动到该ParrentCollectionName文件夹​​。然后您可以删除空的子文件夹。

来源

相关内容