linux - print - 如何獲得文件的完整路徑?




view path linux (19)

有沒有一種簡單的方法可以打印file.txt的完整路徑?

file.txt = /nfs/an/disks/jj/home/dir/file.txt

<command>

dir> <command> file.txt  

應該打印

/nfs/an/disks/jj/home/dir/file.txt

適用於Mac,Linux,* nix:

這將為您提供當前目錄中所有文件的引用csv:

ls | xargs -I {} echo "$(pwd -P)/{}" | xargs | sed 's/ /","/g'

這個輸出可以很容易地複製到python列表或任何類似的數據結構中。


以下通常會做訣竅:

 echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1")

你可以將它保存在你的“shell.rc”中,或者放在控制台中

函數absolute_path {echo“$ PWD / $ 1”; }

別名ap =“絕對路徑”

例:

ap somefile.txt

會輸出

/home/user/somefile.txt


使用readlink

readlink -f file.txt

另一個Linux工具,可以完成這項工作:

fname <file>

在Mac OSX中,執行以下步驟:

  1. cd進入目標文件的目錄。
  2. 鍵入以下終端命令之一。
終奌站
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. file.txt替換為您的實際文件名。
  2. Enter鍵

在類似的情況下,我從其他位置啟動cshell腳本。 為了設置腳本的正確絕對路徑,使其僅在指定目錄中運行,我使用以下代碼:

set script_dir = `pwd`/`dirname $0`

$0存儲腳本執行的確切字符串。

例如,如果腳本是這樣啟動的: $> ../../test/test.csh $script_dir將包含/home/abc/sandbox/v1/../../test


如果您與文件在同一個目錄中:

ls "`pwd`/file.txt"

用你的目標文件名替換file.txt


對於Mac OS,如果您只想在取景器中獲取文件的路徑,請控制單擊該文件,然後向下滾動到底部的“服務”。 您會得到許多選擇,包括“複製路徑”和“複製完整路徑”。 點擊其中的一個將路徑放在剪貼板上。


知道這有一種更簡單的方法,但如果我能找到它,我就會受到傷害......

[email protected]:~$ python -c 'import os; print(os.path.abspath("cat.wav"))'
/home/jcomeau/cat.wav
[email protected]:~$ ls $PWD/cat.wav
/home/jcomeau/cat.wav

我想你正在使用Linux。

我在coreutils 8.15中發現了一個名為realpath的實用程序。

realpath realpath
/data/ail_data/transformed_binaries/coreutils/test_folder_realpath/realpath

我發現的最簡單的方法是

for i in `ls`; do echo "`pwd`/$i"; done

這對我來說很有效


這將適用於文件和文件夾:

getAbsolutePath(){
    [[ -d $1 ]] && { cd "$1"; echo "$(pwd -P)"; } || 
    { cd "$(dirname "$1")" || exit 1; echo "$(pwd -P)/$(basename "$1")"; }
}

這對我來說工作得很好。 它不依賴於文件系統(取決於需要的pro / con),所以它會很快; 而且,它應該可以移植到大多數* NIX。 它確實假定傳遞的字符串的確相對於PWD而不是其他目錄。

function abspath () {
   echo $1 | awk '\
      # Root parent directory refs to the PWD for replacement below
      /^\.\.\// { sub("^", "./") } \
      # Replace the symbolic PWD refs with the absolute PWD \
      /^\.\//   { sub("^\.", ENVIRON["PWD"])} \
      # Print absolute paths \
      /^\//   {print} \'
}

這適用於Linux和Mac OSX ..

 echo $(pwd)$/$(ls file.txt)

通常:

find `pwd` | grep <filename>

或者,只為當前文件夾:

find `pwd` -maxdepth 1 | grep <filename>

echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1")

這是對@ ZeRemz的answer發生了什麼的answer :

  1. 該腳本獲取相對路徑作為參數"$1"
  2. 然後我們得到該路徑的dirname部分(您可以將dir或文件傳遞給此腳本): dirname "$1"
  3. 然後我們把cd "$(dirname "$1")放到這個相對目錄中
  4. && pwd -P並獲得它的絕對路徑。 -P選項將避免所有符號鏈接
  5. 之後,我們將basename添加到絕對路徑: $(basename "$1")
  6. 作為最後一步,我們echo

find $PWD -type f | grep "filename"

要么

find $PWD -type f -name "*filename*"

fp () {
PHYS_DIR=`pwd -P`
RESULT=$PHYS_DIR/$1
echo $RESULT | pbcopy
echo $RESULT
}

將文本複製到剪貼板並在終端窗口上顯示文本。

:)

(我複制了另一個堆棧溢出答案的一些代碼,但無法再找到該答案)







path