如何使用 bash 命令将一组目录从一个位置移动到另一个位置

如何使用 bash 命令将一组目录从一个位置移动到另一个位置

使用命令行时我可以使用

for i in *txt; do mv "$i" /home/some_user/some_folder/"$i"; done

移动一组文件。

如何使用相同类型的命令移动当前目录中的所有目录?

答案1

您只需添加一个条件来检查该项目是否是一个文件夹。

for i in *; do
  if [ -d "$i" ] ; then
    mv "$i" /home/some_user/some_folder/"$i"
  fi
done

答案2

使用 shell “glob”模式匹配

mv -t /home/some_user/some_folder -- */
  • -t指示mv将所有列出的对象移动到后面路径所示的目录中-t

  • */匹配并扩展为当前目录中所有(非隐藏)目录的名称。请注意,最后的字符/将 glob 匹配限制为目录!(如果您需要包含以 开头的隐藏文件名.,请使用 启用该dotglob选项shopt -s dotglob。)

find

find . -minepth 1 -maxdepth 1 -type d -exec mv -t /home/some_user/some_folder -- {} +
  • -mindepth 1 -maxdepth 1将搜索限制在给定目录的内容内(此处.:)。

  • -type d将匹配限制在目录中。这包括隐藏目录;要排除它们,请使用! -name '.*'

  • -exec COMMAND [ARGUMENTS...] {} +运行(如果有)并COMMAND附加ARGUMENTS...所有匹配文件的路径。

相关内容