Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用>;移动文件;以名义_Bash - Fatal编程技术网

Bash 使用>;移动文件;以名义

Bash 使用>;移动文件;以名义,bash,Bash,我有许多文件具有(大致)统一的文件名,但所有文件的名称都以>开头,例如: >PAU_unit1.fsa >PAU_unit2.fsa . . . >PAU_Kingscliffe.fsa 我想将它们全部移动到一个新目录,如中所示: mv *.fsa newdir/ 但是名称开头的>混淆了mv,这是可以理解的。如果我传递了我在类似问题的答案中看到的-标志,为了防止解析,那么*也会被忽略 有没有办法让mv(或任何其他相关命令)忽略解析,但仍然解析* 使用查找是一种选择: fin

我有许多文件具有(大致)统一的文件名,但所有文件的名称都以>开头,例如:

>PAU_unit1.fsa
>PAU_unit2.fsa
.
.
.
>PAU_Kingscliffe.fsa
我想将它们全部移动到一个新目录,如中所示:

mv *.fsa newdir/
但是名称开头的>混淆了
mv
,这是可以理解的。如果我传递了我在类似问题的答案中看到的
-
标志,为了防止解析,那么
*
也会被忽略


有没有办法让
mv
(或任何其他相关命令)忽略解析
,但仍然解析
*

使用
查找
是一种选择:

find . -name '*.fsa' -maxdepth 1 -exec mv '{}' newdir/ \;

使用
find
是一个选项:

find . -name '*.fsa' -maxdepth 1 -exec mv '{}' newdir/ \;
这应该行得通

mv \>*.fsa newdir/
这应该行得通

mv \>*.fsa newdir/


我有点熟悉
find
,乍一看,我猜这里的关键是
-maxdepth 1
-这到底在做什么?
-maxdepth 1
停止
find
遍历子目录,因为您试图只移动当前目录的文件。我得到以下错误,虽然我复制并粘贴了您的命令:
find:-exec:no terminating”;“或”+“
@anubhava,因为Joe的错误消息提到了它,但我认为它是受支持的。
+
受所有符合POSIX的
find
支持的。但是,您使用的
{}
是错误的:主表达式的结尾应该用或标点。只有紧跟在仅包含两个字符“{}”的参数之后的a才能标点主表达式的结尾。其他用途不应视为特殊用途。请参阅。我对
find
有点熟悉,一眼就猜到这里的关键是
-maxdepth 1
-这到底在做什么?
-maxdepth 1
停止
find
遍历子目录,因为您试图只移动当前目录的文件。我得到以下错误,虽然我复制并粘贴了您的命令:
find:-exec:no terminating”;“或”+“
@anubhava,因为Joe的错误消息提到了它,但我认为它是受支持的。
+
受所有符合POSIX的
find
支持的。但是,您使用的
{}
是错误的:主表达式的结尾应该用或标点。只有紧跟在仅包含两个字符“{}”的参数之后的a才能标点主表达式的结尾。其他用途不应视为特殊用途。请参阅。在生成文件名之前解析重定向;你的命令应该没有问题。(
mv--*.fsa newdir
也应该可以;
--
对shell没有任何特殊的意义,只是解释了
mv
如何解释shell传递给它的参数。)我刚刚意识到原始问题的措辞可能不是很清楚。我希望实现
mv*
命令的效果,但是使用文件名中的
作为可扩展的通配符。i、 我想像这样移动所有文件(由于>在名称中是一个可靠的字符,所以要在开始时捕获它,但随后要匹配任何字符:
mv>*newdir/
只需引用字符:
mv'>*.fsa newdir/
mv\>*.fsa newdir/
。您不必引用整个单词,只需引用需要引用的字符。重定向会在filenam之前解析。)e生成发生;您的命令应该没有问题。(
mv-->.fsa newdir
也应该可以;
-->
对shell没有任何特殊意义,只是解释了
mv
如何解释shell传递给它的参数。)我刚刚意识到,最初的问题可能措辞不太清楚。我想实现
mv*
命令的效果,但使用文件名中的
作为我的可扩展通配符。也就是说,我想移动所有文件(由于>在名称中是一个可靠的字符,所以要在开始时捕获它,但随后要匹配任何字符:
mv>*newdir/
只需引用字符:
mv'>*.fsa newdir/
mv\>*.fsa newdir/
。您不必引用整个单词,只需引用需要引用的字符即可。非常感谢,我知道它应该是做一些简单的事情,比如逃离角色(虽然我可以发誓我以前尝试过,但没有运气!),但是我刚刚又尝试了一次,它确实做到了我想要的。非常感谢你,我知道这应该像逃离角色一样简单(虽然我可以发誓我以前尝试过,但没有运气!)但我刚刚又试了一次,它确实做到了我想要的。