MV 排除文件夹不起作用

MV 排除文件夹不起作用

我正在尝试复制文件夹内的所有文件/目录,但想排除一个文件夹,因为我希望所有其他文件都位于该文件夹内。为了更好地演示下面是文件夹结构

- VideosFolder
      L File1
      L File2
      L File3
      L TutorialFolder

现在我想File1 File2 File3被感动成TutorialFolder这样

- VideosFolder
      L TutorialFolder
          L File1
          L File2
          L File3

我尝试了这个命令

mv ~/Desktop/VideosFolder/!(TutorialFolder) TutorialFolder

但我收到这个错误

mv:无法统计“/home/user/Desktop/VideosFolder/!(TutorialFolder)”:没有这样的文件或目录

我检查了是否shopt extglob已启用并且确实已启用。所以我不知道该怎么做。

答案1

你可以直接跑

mv * TutorialFolder/

而在VideosFolder/。这会将所有文件和目录(不以 开头.)移动到TutorialFolder/.由于您无法将目录移入其自身,因此您可能会收到类似以下内容的警告消息:

mv: cannot move 'TutorialFolder' to a subdirectory of itself, 'TutorialFolder/TutorialFolder'

这是预料之中的,只是意味着mv尚未移动TutorialFolder

答案2

您可以尝试 Rsync 命令。Rsync 是一个快速且多功能的命令行实用程序,可通过远程 shell 在两个位置之间同步文件和文件夹。

 rsync -a --exclude 'TutorialFolder' ~/Desktop/VideosFolder/  ~/Desktop/VideosFolder/TutorialFolder/

答案3

另一个答案有效,但这是一种更干净的方法,假设您在里面,不会出现错误VideosFolder

find . -maxdepth 1 ! \( -name TutorialFolder -o -name '.' \) -exec mv {} TutorialFolder/ \;

这将找到当前目录中名称不等于TutorialFolderand .(当前目录本身)的每个文件和目录,然后将它们-exec用于.mvTutorialFolder

相关内容