使用命令行时我可以使用
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...
所有匹配文件的路径。