如何将所有文件(包括隐藏文件)从一个目录移动到另一个目录?

科里·克莱因(Cory Klein)

如何将目录中的所有文件(包括隐藏文件)移动到另一个目录?

例如,如果我有一个文件夹“ Foo”,其中包含文件“ .hidden”和“ notHidden”,如何将这两个文件都移动到名为“ Bar”的目录中?由于“ .hidden”文件保留在“ Foo”中,因此以下内容不起作用。

mv Foo/* Bar/

自己尝试。

mkdir Foo
mkdir Bar
touch Foo/.hidden
touch Foo/notHidden
mv Foo/* Bar/
吉勒斯“别再邪恶了”

sh

mv Foo/*(DN) Bar/

或者

setopt -s glob_dots
mv Foo/*(N) Bar/

(N)如果您知道目录不为空,请忽略。)

重击

shopt -s dotglob nullglob
mv Foo/* Bar/

sh93

如果您知道目录不为空:

FIGNORE='.?(.)'
mv Foo/* Bar/

标准(POSIX)sh

for x in Foo/* Foo/.[!.]* Foo/..?*; do
  if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done

如果您愿意让mv命令即使成功执行也返回错误状态,则要简单得多:

mv Foo/* Foo/.[!.]* Foo/..?* Bar/

GNU find和GNU mv

find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +

标准查找

如果您不介意切换到源目录:

cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "$@" "$0"' ../Bar/ {} + -type d -prune

这是有关控制点文件是否在bash,ksh93和zsh中匹配的更多详细信息。

重击

设置dotglob选项

$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero

还有一个更灵活的GLOBIGNORE变量,您可以将其设置为以冒号分隔的通配符模式列表,以将其忽略。如果未设置(默认设置),则外壳程序的行为就像设置了值时为空dotglob,而如果未设置选项,则其值就为空.*请参见手册中的“文件名扩展”。除非目录.模式明确匹配..,否则将始终省略普遍目录.

$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one

sh93

设置FIGNORE变量如果未设置(默认设置),则外壳的行为就像该值是.*要忽略...,必须对其进行显式匹配(ksh 93s + 2008-01-31中的手册指出...始终被忽略,但这不能正确描述实际行为)。

$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero

您可以通过明确匹配点文件来将它们包括在模式中

$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero

要使扩展名在目录为空的情况下为空,请使用N模式匹配选项:~(N)@(*|.[^.]*|..?*)~(N:*|.[^.]*|..?*)

sh

设置dot_glob选项

% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero

.并且..永远不会匹配,即使该模式.明确地与前导匹配也是如此

% echo .*
..two .one

您可以使用D glob限定符以特定模式包含点文件

% echo *(D)
..two .one none zero

添加Nglob限定词以使扩展在一个空目录中为空:*(DN)


注意:您可能会在不同的顺序文件名扩展的结果(例如,none后面.one接着..two根据您的设置)LC_COLLATELC_ALL以及LANG变量。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python将所有文件从一个目录移动到另一个目录

使用Paramiko将文件从一个目录移动到另一个目录

如何将所有文件从一个目录移动(并覆盖)到另一个目录?

木偶-如何将目录的内容移动到另一个现有目录?

如何使用Ansible模块将目录中的所有文件移动到另一个目录?

将Azure资源从一个目录移动到另一个目录

如何将文件移动到Qt中的另一个现有目录

如何在保持目录结构的同时将某些文件从一个目录移动到另一个目录

如何将某个目录中所有文件的一定百分比移动到另一个目录中?

如何使用数组将文件从一个目录移动到另一个目录

如何按类型将文件从一个目录及其子目录递归移动到另一个目录?

将最新文件从一个目录移动到另一个目录

如何将文件从默认目录移动到另一个目录?

如何将所有文件(不包括子目录)从一个目录移动到另一个目录?

如何将找到的文件移动到另一个目录?

如何将文件从一个子目录移动到第一个子目录之外的另一个子目录?

Bash:如何根据日志文件中的变量将文件从一个目录移动到另一目录?

如何将文本文件中指定的文件移动到BASH上的另一个目录?

将特定类型/扩展名的文件从一个目录移动到另一个目录?

如何将目录中的所有文件移动到另一个,但复制最新的?

如何将多个文件夹移动到另一个目录?

如何将目录的所有内容(不包括父目录)移动到另一个目录 Groovy

如何仅使用文件名的一部分将一个文件从一个目录移动到另一个没有 R 的目录?

C++ 将所有文件从一个目录移动到另一个目录

使用 ssh 命令行将存储库中的所有文件从一个目录移动到另一个目录

如何将具有特定扩展名的文件从子目录移动到另一个目录,包括使用 CMD 创建文件所在的子目录?

如何将所有文件从一个目录复制到另一个目录,但不包括在 bash 脚本中以给定字符串开头的文件

无法将 .gitignore 文件从一个目录移动到另一个目录

如何将文件从一个目录移动到另一个目录(Julia)?