bash – 递归列出sftp上的所有文件
发布时间:2020-12-16 01:18:48 所属栏目:安全 来源:网络整理
导读:我想编写bash脚本以递归列出sftp上的所有文件(带有完整路径),然后在本地与路径交互(因此只需要sftp就可以获取路径).不幸的是,“ls -R”在那里不起作用. 任何想法如何用一些基本的POC做到这一点将非常感激 Available commands:bye Quit sftpcd path Change re
我想编写bash脚本以递归列出sftp上的所有文件(带有完整路径),然后在本地与路径交互(因此只需要sftp就可以获取路径).不幸的是,“ls -R”在那里不起作用.
任何想法如何用一些基本的POC做到这一点将非常感激 Available commands: bye Quit sftp cd path Change remote directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' df [-hi] [path] Display statistics for current directory or filesystem containing 'path' exit Quit sftp get [-Ppr] remote [local] Download file help Display this help text lcd path Change local directory to 'path' lls [ls-options [path]] Display local directory listing lmkdir path Create local directory ln [-s] oldpath newpath Link remote file (-s for symlink) lpwd Print local working directory ls [-1afhlnrSt] [path] Display remote directory listing lumask umask Set local umask to 'umask' mkdir path Create remote directory progress Toggle display of progress meter put [-Ppr] local [remote] Upload file pwd Display remote working directory quit Quit sftp rename oldpath newpath Rename remote file rm path Delete remote file rmdir path Remove remote directory symlink oldpath newpath Symlink remote file version Show SFTP version !command Execute 'command' in local shell ! Escape to local shell ? Synonym for help
这个递归脚本完成了这项工作:
#!/bin/bash # URL=user@XXX.XXX.XXX.XXX TMPFILE=/tmp/ls.sftp echo 'ls -1l' > $TMPFILE function handle_dir { echo "====== $1 =========" local dir=$1 sftp -b $TMPFILE "$URL:$dir" | tail -n +2 | while read info; do echo "$info" if egrep -q '^d' <<< $info; then info=$(echo $info) subdir=$(cut -d ' ' -f9- <<< $info) handle_dir "$dir/$subdir" fi done } handle_dir "." 使用sftp服务器数据填充URL. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |