在 Mac OS X 中无法使用带通配符的 mv

在 Mac OS X 中无法使用带通配符的 mv

我正在尝试使用命令

mv ./?*20?* new_directory

运行ls ./?*20?*会产生多个匹配项,但是上面的命令会给我

usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory

我试过了mv './?*20?*' new_directory,但引号不支持通配符。手动移动带有其名称的文件是可行的,我已经创建了new_directory

我试过,这再次导致错误。

我尝试移动的一些文件是,

./031120.py             ./121120.txt            ./160920.py             ./171120.txt            ./191120class.txt       ./250820.py
./110820.py             ./131020.py             ./170920.py             ./191120.txt            ./201020.py             ./260820.py

编辑:我尝试过mv ./?*20?* 'new_directory/.'mv ./?*20?* new_directory/.得到了相同的结果, usage: ...如上所述。

使用set -x并执行mv ./?*20?* new_directory我得到

+ mv 031120.py 110820.py 121120.txt 131020.py 160920.py 170920.py 171120.txt 191120.txt 201020.py 250820.py 260820.py new_directory

答案1

使用@Spiff 指出的mv ./?*20?* new_directory运行mv 031120.py 110820.py 121120.txt 131020.py 160920.py 170920.py 171120.txt 191120.txt 201020.py 250820.py 260820.py new_directory。我们可以使用 find 和 exec 参数逐个移动文件。

find . -name '?*20.?*' -maxdepth 1 -exec mv '{}' ./new_directory \;

find 获取每个文件并使用 filename 参数运行 exec。

相关内容