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/
。您不必引用整个单词,只需引用需要引用的字符即可。非常感谢,我知道它应该是做一些简单的事情,比如逃离角色(虽然我可以发誓我以前尝试过,但没有运气!),但是我刚刚又尝试了一次,它确实做到了我想要的。非常感谢你,我知道这应该像逃离角色一样简单(虽然我可以发誓我以前尝试过,但没有运气!)但我刚刚又试了一次,它确实做到了我想要的。