diff -ur v11/ftp_ut.py v12/ftp_ut.py --- v11/ftp_ut.py 2020-02-17 17:48:58.000000000 +0900 +++ v12/ftp_ut.py 2020-02-18 21:47:01.000000000 +0900 @@ -165,7 +165,7 @@ return get_lst( path ) def get_kind(path, cut_d=False): - lst = get_lst( path, cut_d ) + lst = get_lst( path, cut_d=cut_d ) if not lst: return '' # no entry if not is_dir( lst ): @@ -177,6 +177,18 @@ def lstf(path=''): return to_str( get_lst( path ), last=True ) + def find(path=''): + kind = get_kind( path ) + if not kind: + return '' + if kind == 'f': + return path + '\n' + lst = kind.split( '\n' )[1:] + if path: + lst = list( map( lambda p: path + '/' + p, lst ) ) + f = lambda p: p + '\n' if not p.endswith( '/' ) else find( p[:-1] ) + return to_str( map( f, lst ), delim='' ) + def rm_rf(path): s = get_kind( path, cut_d=True ) if not s: @@ -340,6 +352,7 @@ ' host user passwd rmdir path ..', ' host user passwd ls path ..', ' host user passwd lst path ..', + ' host user passwd find path ..', ' host user passwd rm_rf path ..', ' host user passwd lock path ..', ' host user passwd unlock path ..', @@ -379,7 +392,7 @@ ftp = new(host, user, passwd, debug=debug) ( p0, p1_ ) = ( paths[0], paths[1:] ) - quiet = p0 in ( 'ls', 'lst', 'lock', 'unlock' ) + quiet = p0 in ( 'ls', 'lst', 'find', 'lock', 'unlock' ) ftp.login() if not quiet: @@ -401,6 +414,8 @@ r = ftp.do_paths( ftp.ls, p1_ ) if p1_ else ftp.ls() elif p0 == 'lst': r = ftp.do_paths( ftp.lstf, p1_ ) if p1_ else ftp.lstf() + elif p0 == 'find': + r = ftp.do_paths( ftp.find, p1_ ) if p1_ else ftp.find() elif p0 == 'rm_rf': r = ftp.do_paths( ftp.rm_rf, p1_ ) elif p0 == 'lock':