Apakah ada cara mudah saya dapat mencetak path lengkap file.txt
?
file.txt = /nfs/an/disks/jj/home/dir/file.txt
Itu <command>
dir> <command> file.txt
harus dicetak
/nfs/an/disks/jj/home/dir/file.txt
Gunakan tautan baca :
readlink -f file.txt
brew install coreutils
lalugreadlink -f file.txt
Saya kira Anda menggunakan Linux.
Saya menemukan sebuah utilitas bernama
realpath
coreutils 8.15.Sesuai komentar @ styrofoam-fly dan @ arch-standton,
realpath
sendirian tidak memeriksa keberadaan file, untuk menyelesaikan ini tambahkane
argumen:realpath -e file
sumber
realpath
berkomitmen untuk repositori coreutils akhir 2011, rilis 8.15 dilakukan pada Januari 2012, saya menjawab pertanyaan (denganreadlink
saran) pada Maret 2011 :)realpath -e
mencetak kesalahan jika argumen tidak ada.Berikut ini biasanya trik:
sumber
LOCAL_VARIABLE="filename.txt" && echo $(cd $(dirname "$LOCAL_VARIABLE") && pwd -P)/$(basename "$LOCAL_VARIABLE")
readlink
tidak berfungsi jika file tersebut adalah symlink, ia akan menunjukkan kepada Anda target symlink daripada symlink itu sendiri.readlink
membawa saya kembali ke dir induk tempat tautan simbolis dihasilkan, tetapi ini mengabaikannya.set .. && echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1")
### Output: / home / ravi / ..Saya tahu ada cara yang lebih mudah untuk ini, tetapi terkutuk jika saya dapat menemukannya ...
sumber
atau
sumber
find `pwd` -type file -name \*.dmp
Jika Anda berada di direktori yang sama dengan file:
Ganti
file.txt
dengan nama file target Anda.sumber
echo $(pwd)/file.txt
Di Windows:
Shift
dan mengklik kanan pada file di Windows Explorer memberi Anda opsi yang disebutCopy as Path
. Ini akan menyalin path lengkap file ke clipboard.Di Linux:
realpath yourfile
untuk mendapatkan path lengkap file seperti yang disarankan oleh orang lain.sumber
Saya tahu bahwa ini adalah pertanyaan lama sekarang, tetapi hanya untuk menambah informasi di sini:
Perintah Linux
which
dapat digunakan untuk menemukan filepath dari file perintah, yaituAda beberapa peringatan untuk ini; silakan lihat https://www.cyberciti.biz/faq/how-do-i-find-the-path-to-a-command-file/ .
sumber
Bekerja di Mac, Linux, * nix:
Ini akan memberi Anda csv yang dikutip dari semua file dalam direktori saat ini:
Output ini dapat dengan mudah disalin ke dalam daftar python atau struktur data serupa.
sumber
Anda dapat menggunakan skrip fpn (nama path lengkap) :
fpn
bukan paket Linux standar, tetapi ini adalah proyek github gratis dan terbuka dan Anda dapat mengaturnya dalam satu menit .sumber
pwd
dengan sendirinya harus berjalan dengan baik di Linux dan sebagian besar lingkungan OS seperti Unix lainnya.Anda dapat menggunakan fungsi ini. Jika nama file diberikan tanpa jalur relatif, maka diasumsikan ada di direktori kerja saat ini:
Pemakaian:
Penggunaan dengan jalur relatif:
Dengan spasi dalam nama file:
sumber
Dalam skenario yang sama, saya meluncurkan skrip cshell dari beberapa lokasi lain. Untuk mengatur jalur absolut yang benar dari skrip sehingga hanya berjalan di direktori yang ditentukan, saya menggunakan kode berikut:
$0
menyimpan string yang tepat bagaimana skrip dieksekusi.Untuk misalnya jika skrip diluncurkan seperti ini:
$> ../../test/test.csh
,$script_dir
akan berisi/home/abc/sandbox/v1/../../test
sumber
./test.csh
Anda akan memiliki lintasan yang berakhir dengan/test/.
Untuk Mac OS X, saya mengganti utilitas yang datang dengan sistem operasi dan menggantinya dengan versi coreutils yang lebih baru. Ini memungkinkan Anda untuk mengakses alat-alat seperti
readlink -f
(untuk jalur absolut ke file) danrealpath
(jalur absolut ke direktori) di Mac Anda.Versi Homebrew menambahkan 'G' (untuk Alat GNU) di depan nama perintah - sehingga padanannya menjadi
greadlink -f FILE
dangrealpath DIRECTORY
.Petunjuk cara menginstal coreutils / GNU Tools pada Mac OS X melalui Homebrew dapat ditemukan di Arktik StackExchange ini .
NB: Perintah
readlink -f
danrealpath
harus bekerja di luar kotak untuk pengguna non-Mac Unix.sumber
brew install coreutils
Ini adalah penjelasan tentang apa yang terjadi pada jawaban @ ZeRemz :
"$1"
dirname "$1"
cd "$(dirname "$1")
ke dir relatif ini&& pwd -P
dan dapatkan jalur absolut untuk itu.-P
Opsi akan menghindari semua symlink$(basename "$1")
echo
itusumber
Ini bekerja cukup baik untuk saya. Itu tidak bergantung pada sistem file (pro / con tergantung pada kebutuhan) jadi itu akan cepat; dan, itu harus portabel untuk hampir semua * NIX. Itu menganggap string yang diteruskan memang relatif terhadap PWD dan bukan direktori lain.
sumber
Ini naif, tapi saya harus membuatnya agar sesuai dengan POSIX. Membutuhkan izin untuk masuk ke direktori file.
sumber
Biasanya:
Atau, hanya untuk folder saat ini:
sumber
Saya suka banyak jawaban yang sudah diberikan, tetapi saya merasa ini sangat berguna, terutama di dalam skrip untuk mendapatkan path lengkap file, termasuk mengikuti symlink dan referensi relatif seperti
.
dan..
Yang akan mengembalikan path lengkap dari
file
dari path root dan seterusnya. Ini dapat digunakan dalam skrip sehingga skrip tahu dari mana ia menjalankan jalurnya, yang berguna dalam klon repositori yang dapat ditemukan di mana saja pada mesin.Saya kemudian dapat menggunakan
${basePath}
variabel dalam skrip saya untuk secara langsung referensi skrip lain.Semoga ini membantu,
Dave
sumber
Anda dapat menyimpan ini di Anda
shell.rc
atau hanya memasukkannya ke konsolcontoh:
akan menampilkan
sumber
ap ../foobar.txt
akan memberi/home/user/../foobar.txt
, yang umumnya tidak seperti yang Anda inginkan.ap /tmp/foobar.txt
akan memberi/home/user//tmp/foobar.txt
, mana yang salah.Akan menemukan semua tautan ke file dengan nomor inode yang sama dengan file.txt
menambahkan
-xdev
bendera akan menghindarifind
untuk melintasi batas perangkat ("mount points"). (Tapi ini mungkin tidak akan menyebabkan apa pun ditemukan jikafind
tidak memulai pada direktori pada perangkat yang sama sepertifile.txt
)Perhatikan bahwa
find
dapat melaporkan beberapa jalur untuk objek sistem file tunggal, karena sebuah Inode dapat ditautkan oleh lebih dari satu entri direktori, bahkan mungkin menggunakan nama yang berbeda. Contohnya:Akan menghasilkan:
sumber
Ini akan berfungsi untuk file dan folder:
sumber
Ini bekerja dengan Linux dan Mac OSX ..
sumber
Utilitas Linux lain, yang melakukan pekerjaan ini:
sumber
Untuk Mac OS, jika Anda hanya ingin mendapatkan jalur file di finder, kontrol klik file tersebut, dan gulir ke bawah ke "Layanan" di bagian bawah. Anda mendapatkan banyak pilihan, termasuk "salin jalur" dan "salin jalur lengkap". Mengklik pada salah satu dari ini akan meletakkan path di clipboard.
sumber
Di mac yang disebutkan di bawah ini bekerja. Tidak perlu menambahkan garis mewah.
sumber
print working directory
Menyalin teks ke clipboard Anda dan menampilkan teks di jendela terminal.
:)
(Saya menyalin beberapa kode dari jawaban stack overflow lain tetapi tidak dapat menemukan jawaban itu lagi)
sumber
cara termudah yang saya temukan adalah
ini bekerja dengan baik untuk saya
sumber
Di Mac OSX, lakukan langkah-langkah berikut:
cd
ke dalam direktori file target.file.txt
dengan nama file Anda yang sebenarnya.sumber
Di samping "readlink -f", perintah lain yang umum digunakan:
Ini juga memberikan path lengkap dan nama file di konsol
Di luar topik: Metode ini hanya memberikan tautan relatif , bukan absolut. The
readlink -f
perintah adalah yang benar.sumber
Buat fungsi seperti di bawah ini (gema jalur absolut file dengan pwd dan tambahkan file di akhir jalur:
Sekarang Anda bisa menemukan jalur file apa saja:
sumber