How to identify whether the item of a directory is a file or a directory using Net::SFTP
or ruby code?
Asked
Active
Viewed 1,584 times
4

Sinan Ünür
- 116,958
- 15
- 196
- 339

Aditya
- 425
- 3
- 8
- 22
3 Answers
6
The do_stat
method seems like it could get you that information. See also the documentation for Net::SFTP::Attributes
and perldoc -f stat
.

Sinan Ünür
- 116,958
- 15
- 196
- 339

innaM
- 47,505
- 4
- 67
- 87
5
To illustrate the use of Manni's recommendation:
use Fcntl(:mode);
my $permissions = $sftp->do_stat($path)->perm();
my $is_directory = S_ISDIR($permissions);

Community
- 1
- 1

Adam Bellaire
- 108,003
- 19
- 148
- 163
1
At least two ways to do it in SFTP and Ruby:
require 'net/sftp'
Net::SFTP.start('HOSTNAME', 'USER', :password => 'PASSWORD') do |sftp|
file = File.expand_path(__FILE__)
dir = File.dirname(file)
sftp.lstat!(file).directory?
sftp.lstat!(dir).file?
sftp.file.open(dir, "r") do |f|
f.stat.file?
f.stat.directory? # true
end
end

dgo.a
- 2,634
- 23
- 35