如何使用通配符只匹配文件而不是目录?

Mic*_*uce 11 shell bash zsh wildcards

我有一个文件夹叫 home/homeLife

我有一个名为 home1 home2 和 home3 的文件存储在 /home

我想将所有home*home/homeLife/..

我打字

mv home* /home/homeLife
cannot move homeLife into subdirectory of itself
Run Code Online (Sandbox Code Playgroud)

我的问题:如何排除目录?

Sté*_*las 10

随着zsh,使用水珠预选赛:

mv home*(.) dst 
Run Code Online (Sandbox Code Playgroud)

仅移动常规文件。

尽管

mv home*(^/) dst 
Run Code Online (Sandbox Code Playgroud)

移动目录之外的任何类型的文件。

mv home*(^-/) dst
Run Code Online (Sandbox Code Playgroud)

还将排除指向目录的符号链接。


小智 5

您可以使用查找。以下应该工作。

find . -name home\* -type f -maxdepth 1 -exec mv {} /home/homeLife/. \;
Run Code Online (Sandbox Code Playgroud)