linux获取文件名
㈠ 如何用shell获取linux目录下的文件名
获取所有常规文件的文件名并打印出来的脚本listfile.sh如下
#!/bin/bash
dir="/*"
dir=$1$dir
for f in $dir
do
if [ -f $f ]
then
echo $f
fi
done
使用方法:
$ listfile.sh PATH
原理:
PATH参数是路径,将路径后加上“/*”,代表该目录下的所有文件和目录名,利用for循环比较每个文件是否是常规文件( -f比较运算符),若if表达式为真则打印
举例:
ls -l
total 36
-rwxrwxr-x 1 lipeng lipeng 48 Nov 29 20:08 aaa.sh
drwxrwxr-x 2 lipeng lipeng 4096 May 4 2015 byteorder
drwxrwxr-x 8 lipeng lipeng 4096 May 3 2015 hello
-rwxrwxr-x 1 lipeng lipeng 122 Nov 29 20:16 listfile.sh
-rw-rw-r-- 1 lipeng lipeng 177 Aug 1 03:10 main.cpp
drwxrwxr-x 2 lipeng lipeng 4096 Sep 13 16:42 matrix
drwxrwxr-x 5 lipeng lipeng 4096 Apr 28 2015 modbus
drwxrwxr-x 2 lipeng lipeng 4096 Sep 13 10:10 shtest
drwxrwxr-x 2 lipeng lipeng 4096 Sep 16 18:21 test
$ ./listfile.sh .
./aaa.sh
./listfile.sh
./main.cpp
㈡ Linux批量提取文件名
简单的获取文件名的话,可以输入命令:ls,如果需要把整个磁盘所有文件名字打出的话,需要写个脚本,循环递归下。
㈢ linux命令行怎样查看文件名为
1.列出文件清单命令:ls ls命令能够列出当前目录下的所有内容。ls 命令的执行方式为: # ls [-选项] [文件名或者目录名] 进入到Linux命令行中后,我们至少要知道当前所处的位置有哪些内容,这些信息就可以使用ls命令来获得。
㈣ Linux系统中获取路径的文件名的方法
这篇文章主要介绍了Linux系统中获取路径的文件名的方法,文中总结出了两条,需要的朋友可以参考下
代码如下:
[[email protected]
]#basename
/root/aaa/bbb/dabu.txt
显示:
代码如下:
dabu.txt
#获取路径的文件名
shell脚本中如何获得脚本文件所在路径?
方法一:
代码如下:
[[email protected]
]#DIR=$(cd
"$(dirname
"$0")";
pwd)
[[email protected]
]#echo
$DIR
但是像这种dirname
"$0"这种写法,在遇到source命令时会得到错误的结果。
方法二:
代码如下:
[[email protected]
]#echo
"$(
cd
"$(
dirname
"${BASH_SOURCE[0]}"
)"
&&
pwd
)"
上面一行命令可以获得脚本的绝对轮径,无论你在何处调用这个脚本。
但是如果含有软链接,就无法使用了。所以,我们为了能正确解析指向脚本的软链接,可以使用下面的多行命令:
代码如下:
SOURCE="${BASH_SOURCE[0]}"
while
[
-h
"$SOURCE"
];
do
#
resolve
$SOURCE
until
the
file
is
no
longer
a
symlink
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
SOURCE="$(readlink
"$SOURCE")"
[[
$SOURCE
!=
/*
]]
&&
SOURCE="$DIR/$SOURCE"
#
if
$SOURCE
was
a
relative
symlink,
we
need
to
resolve
it
relative
to
the
path
where
the
symlink
file
was
located
done
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
也可与source,bash
-c命令使用
但是,如果你在脚本中使用先cd切换到其他目录,在运行时上面的命令片段时,则上面的命令不能等到正确的结果。可以参考关于$CDPATH
陷阱的文章。想理解它如何其作用的,可以运行下面的代码:
代码如下:
#!/bin/bash
SOURCE="${BASH_SOURCE[0]}"
while
[
-h
"$SOURCE"
];
do
#
resolve
$SOURCE
until
the
file
is
no
longer
a
symlink
TARGET="$(readlink
"$SOURCE")"
if
[[
$SOURCE
==
/*
]];
then
echo
"SOURCE
'$SOURCE'
is
an
absolute
symlink
to
'$TARGET'"
SOURCE="$TARGET"
else
DIR="$(
dirname
"$SOURCE"
)"
echo
"SOURCE
'$SOURCE'
is
a
relative
symlink
to
'$TARGET'
(relative
to
'$DIR')"
SOURCE="$DIR/$TARGET"
#
if
$SOURCE
was
a
relative
symlink,
we
need
to
resolve
it
relative
to
the
path
where
the
symlink
file
was
located
fi
done
echo
"SOURCE
is
'$SOURCE'"
RDIR="$(
dirname
"$SOURCE"
)"
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
if
[
"$DIR"
!=
"$RDIR"
];
then
echo
"DIR
'$RDIR'
resolves
to
'$DIR'"
fi
echo
"DIR
is
'$DIR'"
㈤ linux 如何提取文件夹名
提取当前文件夹名称
可以结合使用pwd命令和basename命令,pwd命令返回当前工作路径,basename命令去掉前导的目录部分后打印“名称”。
$ basename `pwd`
注意:pwd两侧为反引号`,作用是运行两个反引号之间的命令,并且将命令运行的结果返回。
提取当前文件夹的所有子文件夹
可以使用find命令,设置查询文件类型参数为-type为目录d,还可以设置-maxdepth参数为1,不查询二级子目录。
$ find . -type d -maxdepth 1
㈥ linux find 怎样取得文件名呢
find ./ -name "*.m" -exec grep -l 'myCenter' {} \;
grep加入-l选项,就能将找到的文件名列出
㈦ Linux的shell脚本中如何获得指定目录下的文件名
#/bin/bash
ls/home/user/test>txt
echo"该目录中有文件"`head-1txt`
rm-rftxt
㈧ Linux下一个文件夹下的文件是动态增加的,如何编程获取文件名
可以使用opendir, readdir和closedir来读取目录下文件项。