将所有文件和目录移动到目标目录

维科

我有目录结构:

~/MYDIR/
  /DESTINATIONDIR/
  /DIR1/
  /DIR2/
  /file1
  /file2

我需要移动DIR1, DIR2,file1,file2DESTINATIONDIR

从终端执行此操作的最优雅,最佳方式是什么?

UPD:假设我们还有更多名称不同的文件和目录

它是

我会考虑采用三种方式。

骇客且容易出错,“移动所有内容”

mv ~/MYDIR/* ~/MYDIR/DESTINATIONDIR

这将尝试将目的地移动到其自身中并爆炸:

mv: cannot move ‘~/MYDIR/DESTINATIONDIR’ to a subdirectory of itself, ‘~/MYDIR/DESTINATIONDIR/DESTINATIONDIR’

但是它将(几乎)移动其他所有东西。这样就可以了,但是有点混乱。如果您需要匹配隐藏文件,请shopt -s dotglob事先运行,它将起作用。

手动移动文件列表

鉴于事情的清单很短,我们可以很轻松地将它们列出来,并进行一些bash扩展:

 mv ~/MYDIR/{DIR{1,2},file{1,2}} ~/MYDIR/DESTINATIONDIR

如果您需要使用此方法隐藏文件,只需将它们包括在列表中即可。

如果此列表来自其他内容(例如find),则很难确保目的地是最后一个参数。您可以使用-t参数将目的地移到最前面这是一个可怕的例子,但在需要时突出显示:

find ~/MYDIR/ -maxdepth 1 ! -name DESTINATIONDIR -exec mv -t ~/MYDIR/DESTINATIONDIR {} +

逆向shopt定义,优雅。

因此,让我们在手动列出和通配符之间取得平衡。通过打开Bash中的扩展globbing功能,我们可以选择[几乎]除了目标目录之外的所有内容

shopt -s extglob
mv ~/MYDIR/!(DESTINATIONDIR) ~/MYDIR/DESTINATIONDIR

如果您需要匹配隐藏文件,请shopt -s dotglob事先运行,它将起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bash / Shell将所有文件从子目录移动到目标目录?

Shell脚本,用于将文件从源目录移动到目标目录

如何一次将多个文件移动到特定的目标目录?

将所有文件和目录移动到Windows中的新子目录

如何使用通过FTP的骆驼路由将所有文件从目录(包括子目录)移动到特定目录,而目标中没有子目录?

将所有视频文件移动到父目录

如何将所有带有批处理文件移动的文件登录到文本文件中,并且目标目录包含在日志中?

使用文件结构将所有文件从源目录复制到C#中的目标目录

如何将文件名第一部分的名称从源目录移动到目标目录?

如何使用bash将所有文件从多个目录移动到其父目录

如何将子目录中的所有文件递归移动到单个目录?

使用node.js将目录中的所有文件移动到父目录

如何将所有文件从当前目录移动到上层目录?

将所有文件从子目录移动到父目录

将单个共享目录用作所有项目的Cargo目标目录是否可以?

python 有没有办法通过从 conf 文件中读取源目录和目标目录来移动 Windows 上的文件?

将目录中的所有文件移动到同一目录中的新子目录

创建顺序编号的目标目录和批处理移动文件的命令

使用 .htaccess 和将所有文件移动到 Web 根目录之外是否存在安全差异?

如何通过终端命令将所有文件和目录复制或移动到其他用户

如何通过*将所有文件(包括隐藏文件)移动到父目录中

将所有文件移动到文件名开头的子目录中

将所有文件移动到以部分文件名命名的子目录中

使用批处理脚本将特定文件从源目录复制到目标目录和子目录

如何将所有具有特定扩展名的文件移动到特定目录?

如何在目标目录中递归地压缩所有文件?

FTP 删除目标目录中的所有文件夹

将所有具有相同名称的文件从子目录移动到一个目录中

将文件拆分为N个具有相同名称但目标目录不同的文件