Список абсолютных путей к папкам по заданному пути — оболочка

Я хочу перечислить абсолютный путь всех папок в данном пути, используя сценарий оболочки.

Что я пробовал это:

ls -l /var/www/temp

Но я не мог найти вариант для ls команда, которая будет перечислять абсолютный путь.

Я нашел связанный вопрос в StackOverflow: Как перечислить полные пути к папкам внутри каталога в Linux?

Но то, что мне нужно, в одной команде, мне нужно перечислить все папки по указанному пути (этот путь меняется) с их абсолютным путем.

Может ли кто-нибудь помочь мне сделать это? Заранее спасибо.

0

Решение

Это поможет, но не используетLS»

Вы можете использовать замену pwd на find.

   find /var/www/temp -type d

Но имейте в виду, что это будет вывод списка на экран.

0

Другие решения

Как насчет функции оболочки?

dabspath () {
if [ -d "$1" ]
then
cd "$1"find "$PWD" -type d
cd "$OLDPWD"else
echo "$0: $1: No such directory"fi
}

Использование: dabspath foo

Если foo является каталогом относительно текущего рабочего каталога, то он напечатает абсолютный путь к foo и любым подкаталогам.

0

for D in `find . -maxdepth 1 -type d`; do echo $PWD${D#.}; done

Как это устроено:

  1. Во-первых, bash запустит команду find внутри обратных кавычек и заменит часть в обратных кавычках на то, что возвращает find, которые являются именами всех прямых подкаталогов рабочего каталога.
  2. Затем цикл for пройдет через все подкаталоги и для каждого подкаталога, хранящегося в переменной D, выведет путь к рабочему каталогу ($ PWD), за которым следует подкаталог D, из которого он удаляет префикс «.». Таким образом, абсолютный путь печатается как ожидалось.

Примечание. Поскольку каждый каталог имеет жесткую ссылку на себя (подкаталог «.»), Он также напечатает путь к рабочему каталогу.

0

В этом сценарии перечислены все каталоги или, опционально, все типы, распознаваемые -type T вариант find, По умолчанию, если аргументы не предоставлены, в нем перечислены все каталоги в текущем каталоге. Чтобы перечислить абсолютные пути, передайте абсолютный путь в качестве целевого каталога.

#!/bin/bash

# usage: ${0} [-type [fd]] [-l] <directory>

_TYPE="d" # if f, list only files, if d, list only directories
let _long=0
let _typeflag=0

# collect dirs and files
DIRS=( ) ; FILS=( )
for A in "$@" ; do
if [ $_typeflag -eq 1 ]; then
_TYPE=$A
let _typeflag=0
elif [ -d "$A" ]; then
DIRS=( ${DIRS[@]} "$A" )
elif [ -f "$A" ]; then
FILS=( ${FILS[@]} "$A" )
else
case "$A" in
"-type") let _typeflag=1 ;;
"-l") let _long=1 ;;
*) echo "not a directory: [$A]" 1>&2
exit 1
;;
esac
fi
done

# list files in current dir, if nothing specified
[ ${#DIRS[@]} -eq 0 ] && DIRS=( "$(pwd -P)" )

if [ $_long -eq 0 ]; then
find ${DIRS[@]} -maxdepth 1 -type $_TYPE | while read F ; do
if [[ "$F" != "." && "$F" != ".." ]]; then
echo "\"$F\""fi
done | xargs ls -ltrad --time-style=long-iso | sed 's#.*:[0-9][0-9] ##'
else
find ${DIRS[@]} -maxdepth 1 -type $_TYPE | while read F ; do
echo "\"$F\""done | xargs ls -ltrad --time-style=long-iso
fi
0
По вопросам рекламы [email protected]