주어진 디렉토리에 있는 모든 파일을 나열하지만 디렉토리는 제외하고 inode 번호를 표시하는 방법.
ls -li | grep ^-
inode 번호가 줄의 시작 부분에 표시되기 때문에 이와 같은 것은 작동하지 않습니다.
답변1
여러 가지 솔루션이 있습니다. 다음으로 시작하는 파일 이름이 없다고 가정합니다.-
ls -li | grep " -"
ls -li | awk '/ -/'
디렉토리에 가 포함되어 있으면 -
이 문제를 해결할 수 있습니다.
ls -li | grep "[0-9][0-9]* -"
ls -li | awk '$2 ~ "-.{9}"'
답변2
당신이 사용할 수있는 find
:
find . -maxdepth 1 -type f -exec ls -li '{}' \;
또는 ls
비슷한 출력을 얻습니다.
find . -maxdepth 1 -type f -printf '%i %M %n %u %g %kK %Tc %p\n'
파싱 ls
은나쁜 생각문제를 일으키는 경우가 많기 때문입니다.
실제로 직접 사용하고 싶다면 ls
다음과 같이 할 수 있습니다.
ls -li | gawk '$2!~/d/'
답변3
찾아야 할 또 다른 대안:
find -maxdepth 1 -type f -printf "%i %p\n"
아니면 또 다른 것이 있습니다:
find -maxdepth 1 -type f -ls
답변4
이는 tree
명령과 를 사용하는 또 다른 방법 입니다 grep
. Grep은 디렉토리 항목을 필터링하는 데 사용됩니다.
$ tree --inodes -f -F|grep -v "/$"
예
$ tree --inodes -f -F|grep -v "/$"|less
.
|-- [10370679] ./a
|-- [10359494] ./a.bash*
| |-- [10359495] ./alsa/alsa-info.sh*
| `-- [10370145] ./alsa/alsa-info.txt.v8hSmCT2Rf
| | | |-- [11147371] ./apps/apache-maven-2.0.9/bin/m2*
| | | |-- [11147367] ./apps/apache-maven-2.0.9/bin/m2.bat
| | | |-- [11147368] ./apps/apache-maven-2.0.9/bin/m2.conf
| | | |-- [11147372] ./apps/apache-maven-2.0.9/bin/mvn*
| | | |-- [11147369] ./apps/apache-maven-2.0.9/bin/mvn.bat
| | | |-- [11147373] ./apps/apache-maven-2.0.9/bin/mvnDebug*
| | | `-- [11147370] ./apps/apache-maven-2.0.9/bin/mvnDebug.bat
| | | `-- [11147378] ./apps/apache-maven-2.0.9/boot/classworlds-1.1.jar
| | | `-- [11147374] ./apps/apache-maven-2.0.9/conf/settings.xml
| | | `-- [11147376] ./apps/apache-maven-2.0.9/lib/maven-2.0.9-uber.jar
| | |-- [11147363] ./apps/apache-maven-2.0.9/LICENSE.txt
| | |-- [11147364] ./apps/apache-maven-2.0.9/NOTICE.txt
| | `-- [11147365] ./apps/apache-maven-2.0.9/README.txt
위의 코드는 디렉터리 계층 구조를 각 파일의 줄로 병합하고 스위치를 사용하여 -F
트리가 /
디렉터리인 각 줄에 후행을 추가하도록 합니다. 이 기능을 사용하면 이 후행이 있는 모든 줄을 잡고 /
무시할 수 있습니다.