我正在尝试在一个文件夹中搜索所有制表符分隔文件,如果找到,则需要使用bash将所有文件传输到另一个文件夹。
在我的代码中,我目前正在尝试查找所有文件,但不知何故它无法正常工作。
这是我的代码:
>nul 2>nul dir /a-d "folderName\*" && (echo Files exist) || (echo No file found)
提前致谢:)
答案 0 :(得分:5)
对于一个简单的移动(或复制 - 用import socket
host = '192.168.1.158'
port = 13803
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(("@Action.HelloWorld.ers").encode())
s.close()
替换mv
)文件,@ tripleee的回答就足够了。为了递归搜索文件并在每个文件上运行命令,cp
派上用场。
示例:
find
其中find <src> -type f -name '*.tsv' -exec cp {} <dst> \;
是要从复制的目录,<src>
是要将复制到的目录。请注意,这会以递归方式搜索,因此任何名称重复的文件都会导致覆盖。您可以将<dst>
传递给-i
,以便在覆盖前提示:
cp
说明:
find <src> -type f -name '*.tsv' -exec cp -i {} <dst> \;
要了解在没有find <src> -type f -name '*.tsv' -exec cp -i {} <dst> \;
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^^
| | | | | | | | | | | ||
| | | | | | | | | | | | --- terminator
| | | | | | | | | | | --- escape for terminator
| | | | | | | | | | --- destination directory
| | | | | | | | | --- the path of each file found
| | | | | | | | --- prompt before overwriting
| | | | | | | --- the copy command
| | | | | | --- flag for executing a command (cp in this case)
| | | | | --- pattern of files to match
| | | | --- flag for specifying file name pattern
| | | --- 'f' for a regular file (as opposed to e.g. 'd' for directory)
| | --- flag for specifying the file type
| --- location to search
--- the find command, useful for searching for files
运行实际命令的情况下发生的事情,可以在前面添加find
来打印每个命令而不是运行它:
echo
答案 1 :(得分:2)
您的尝试中几乎没有有效的Bash脚本。
mv foldername/*.tsv otherfolder/
如果没有匹配的文件,将会出现错误消息。
答案 2 :(得分:0)
“它不起作用”。这意味着stackoverflow很少。
让我们先来看看你做了什么:
>nul 2>nul dir /a-d "folderName\*"
所以,你正在做一个dir
(大多数Linux用户会使用ls
,但是在...上
,输出位于文件nul
中。出于调试目的,最好查看nul
(做cat nul
)中的内容。我敢打赌它是这样的:
dir: cannot access '/a-d': No such file or directory
dir: cannot access 'folderName\*': No such file or directory
这意味着dir
退出时出错。因此,echo No file found
将被执行。
这意味着你的输出可能是
No file found
这与预期完全一致。
在您的代码中,您说您要查找所有文件。这意味着你想要输出
ls folderName
或
find folderName
如果你想以递归方式做事。由于jsageryd上面已经解释过find
,我不会详细说明。
如果您只想查看该特定目录,可以执行以下操作:
if dir folderName/*.tsv > nul 2>nul ; then
echo "Files exist"
else
echo "No file found"
fi
然后从那里开始。