Chr*_*ris 56 linux file-management file-transfer ubuntu
如何将文件而不是目录移动到另一个文件夹/父文件夹中?
我有一个非常难看的文件夹结构,一些 .mp3 文件在子文件夹中深埋了 6 层。
我想使用 Ubuntu 将所有文件(主要是 .mp3 但不是全部)放在一个目录中,根本没有子目录。
帮助?
Chr*_*ian 67
askubuntu-QA 中有一个很好的答案。
为此,请打开终端并执行以下命令:
Run Code Online (Sandbox Code Playgroud)mv -v ~/Downloads/* ~/Videos/
它将所有文件和文件夹从下载文件夹移动到视频文件夹。
移动所有文件,但不移动文件夹:
但是,如果您有兴趣将所有文件(但不是文件夹)从 Downloads 文件夹移动到 Videos 文件夹,请使用此命令
Run Code Online (Sandbox Code Playgroud)find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos
仅移动下载文件夹中的文件,而不移动子文件夹中的文件:
如果要移动 Downloads 文件夹中的所有文件,但不移动 Download 文件夹中文件夹中的任何文件,请使用以下命令:
Run Code Online (Sandbox Code Playgroud)find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
在这里,
-maxdepth
选项指定了 find 应该尝试的深度,1
意味着,只有在 find 命令中指定的目录。您可以尝试使用2
,3
也进行测试。有关详细说明,请参阅 Ubuntu find 联机帮助页。
pab*_*ouk 19
find /src/dir -type f -exec mv --backup=numbered -t /dst/dir {} +
Run Code Online (Sandbox Code Playgroud)
该命令将查找/src/dir
(包括所有子目录)下的所有常规文件,并/dst/dir
使用命令将它们移动到mv
。只需用您的目录替换目录即可。具有相同名称的文件将自动重命名。
如果您只想移动 MP3 文件,请-iname "*.mp3"
在find
命令后添加选项-type f
。
只有 c0dev 回复中的第二个命令回答了这个问题。以下是它与此回复的比较。第3点和第4点可以在其他回复中以与此处相同的方式解决。
mv
解决方案-exec +
不需要调用额外的命令xargs
或者像或者parallel
两次传递文件名。--backup=numbered
。不幸的是~3~
,默认情况下,这些带有后缀的备份将隐藏在大多数文件管理中。不幸的mv
是不允许更改后缀,但可以通过其他命令轻松进行后处理。这是一个 GNU 扩展。-print0
-exec command {} +
是 IEEE Std 1003.1 (POSIX)、ISO/IEC 9945 和 The Single UNIX Specification 标准的一部分。因此它应该更便携。请参阅IEEE Std 1003.1, 2004 Edition、IEEE Std 1003.1, 2013 Edition和0000243: Add -print0 to "find"。但无论如何,所需的-t
开关mv
是 GNU 扩展,因此整个命令在 POSIX 系统之间不可移植。注:在这种情况下find
将能够生产开始的路径-
(我不知道任何这样的实现的find
的时刻。)在{}
应该结束选项指示前面:--
。
我的一句台词 - 这适用于 Mac,但也应该适用于任何 *nix。从要删除子文件夹的目录开始。
# Move files to parent and delete empty folders
find . -not -type d -print0 | xargs -0J % mv -f % . ; find . -type d -depth -print0 | xargs -0 rm -rf
Run Code Online (Sandbox Code Playgroud)
第一部分将所有子文件夹中的所有内容移动到您启动命令的实际文件夹中;第二部分检查子目录是否为空(现在应该:-)并删除它们,这样你就可以在没有子目录的情况下获得所有内容。
归档时间: |
|
查看次数: |
156278 次 |
最近记录: |