我正在尝试使用命令
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。