Skip to main content

May 26, 16

"Howto: convert string to all uppercase
To easily convert a text string to UPPERCASE we use the built-in bash commands:

echo
tr
$ echo convert this to uppercase | tr [a-z] [A-Z]
CONVERT THIS TO UPPERCASE
$
To convert a complete file we use the '<' redirect:

$ tr [a-z] [A-Z] < convert_to_uppercase.txt
CONVERT THIS TO UPPERCASE
$"

May 22, 16

"Java列表文件时按文件名排序
绿悠悠 发布于 2010年12月15日 14时, 2评/5930阅
分享到: 
收藏 +5 踩顶0
排序规则:目录排在前面,按字母顺序排序文件列表
标签: 文件名 排序
代码片段(1) [全屏查看所有代码]
1. [代码][Java]代码    
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
List<File> files = Arrays.asList(new File("<目录>").listFiles());
Collections.sort(files, new Comparator<File>(){
    @Override
    public int compare(File o1, File o2) {
    if(o1.isDirectory() && o2.isFile())
        return -1;
    if(o1.isFile() && o2.isDirectory())
            return 1;
    return o1.getName().compareTo(o2.getName());
    }
});
 
for(File f : files)
    System.out.println(f.getName());"

  •  
     
    ThreadDump信息
May 18, 16

"Linux shell 之 提取文件名和目录名的一些方法
2015-01-26 00:03 21814人阅读 评论(7) 收藏 举报
分类: 初学Linux(27)
版权声明:本文为博主原创文章,未经博主允许不得转载。
很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等。例如,从路径/dir1/dir2/file.txt中提取也文件名file.txt,提取出目录/dir1/dir2,提取出文件后缀txt等。

下面介绍两种常用的方法来进行相关的操作。

一、使用${}
1、${var##*/}
该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。使用例子及结果如下:

从运行结果可以看到,使用该命令,可以提取出我们需要的文件名file.txt。

若使用时在shell程序文件中,可以使用变量来保存这个结果,再加以利用,如file=${var##*/}

2、${var##*.}
该命令的作用是去掉变量var从左边算起的最后一个'.'字符及其左边的内容,返回从左边算起的最后一个'.'(不含该字符)的右边的内容。使用例子及结果如下:

从运行结果可以看到,使用该命令,可以提取出我们需要的文件后缀。

如果文件的后缀不仅有一个,例如,file.tar.gz,命令${var##*.}仅能提取最后一个后缀,而我想提取tar.gz时该怎么办?那么就要用下面所说的${var#*.}命令了。

3、${var#*.}
该命令的作用是去掉变量var从左边算起的第一个'.'字符及其左边的内容,返回从左边算起第一个'.'(不含该字符)的右边部分的内容。使用例子及结果如下:

从运行结果可以看到,使用该命令,可以提取出文件的多个后缀。

4、${var%/*}
该命令的使用是去掉变量var从右边算起的第一个'/'字符及其右边的内容,返回从右边算起的第一个'/'(不含该字符)的左边的内容。使用例子及结果如下:

从运行的结果可以看到,使用该命令,可以提取出我们需要的文件所在的目录

5、${var%%.*}
该命令的使用是去掉变量var从右边算起的最后一个'.'字符及其右边的内容,返回从右边算起的最后一个'.'(不含该字符)的左边的内容。使用例子及结果如下:

当我们需要建立一个与文件名相同名字(没有后缀)的目录与对应的文件相对应时,就可以使用该命令来进行操作。例如,解压文件的情况就与此类似,我们压缩文件file.zip时,会在与file.zip同级目录下建立一个名为file的目录。

6、${}总结
其实${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的'/'或'.'。也就是说,上面的使用方法只是它使用的一个特例。

看到上面的这些命令,可能会让人感到非常难以理解和记忆,其实不然,它们都是有规律的。
#:表示从左边算起第一个
%:表示从右边算起第一个
##:表示从左边算起最后一个
%%:表示从右边算起最后一个
换句话来说,#总是表示左边算起,%总是表示右边算起。

*:表示要删除的内容,对于#和##的情况,它位于指定的字符(例子中的'/'和'.')的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定的字符(例子中的'/'和'.')的右边,表示删除指定字符及其右边的内容。这里的'*'的位置不能互换,即不能把*号放在#或##的右边,反之亦然。

例如:${var%%x*}表示找出从右边算起最后一个字符x,并删除字符x及其右边的字符。

看到这里,就可以知道,其实该命令的用途非常广泛,上面只是指针文件名和目录名的命名特性来进行提取的一些特例而已。

二、basename和dirname
${}并不是专门为提取文件名和目录名设计的命令,那么basename和dirname命令就是专门为做这一件事而已准备的了。

1、basename
该命令的作用是从路径中提取出文件名,使用方法为basename NAME [SUFFIX]。

1)从路径中提出出文件名(带后缀),例子如下:



2)从上面命令的用法中可以看到,后缀(SUFFIX)是一个可选项。所以,若只想提取出文件名file,而不带有后缀,还可以在变量的后面加上后缀名,例子如下:


2、dirname
该命令的作用是从路径中提取出目录名,使用方法为 dirname NAME
使用例子如下:

这样就提取出了file.txt文件所在的目录。

注:该命令不仅能提取出普通文件所的目录,它能提取出任何文件所在的目录,例如目录所在的目录,如下:

它提取出了目录dir2所在的目录dir1."

May 08, 16

"linux 按文件大小排序和按时间排序查看文件命令
标签: linux按文件大小排序按文件修改时间查看
2013-11-13 15:39 5463人阅读 评论(0) 收藏 举报
分类: linux脚本(3)
版权声明:本文为博主原创文章,未经博主允许不得转载。
1.按文件大小查看文件
a.降序:ls -lsh
moudaen@morton:~$ ls -lsh
total 20M
 20M -rw-r--r-- 1 moudaen 65536  20M Nov 11 17:44 Gender.war
4.0K drwxr-xr-x 2 moudaen 65536 4.0K Nov 11 17:44 test
8.0K -rw-r--r-- 1 moudaen 65536 5.2K Nov 11 11:44 MyApp.java
命令解释:
ls后面的三个参数:
-l表示以长格式显示,即列出文件详细信息如上面的格式。
-s表示排序,默认是降序排列。
-h表示将文件大小转为我们习惯的M,K等为单位的大小
b.升序:ls -lrsh
命令解释:
关于-l,-s,-h含义同上
-r表示reverse的意思,这里就是reverse order倒序,默认是降序的,加上-r就反转下即为升序了。
moudaen@morton:~$ ls -lrsh
total 20M
8.0K -rw-r--r-- 1 moudaen 65536 5.2K Nov 11 11:44 MyApp.java
4.0K drwxr-xr-x 2 moudaen 65536 4.0K Nov 11 17:44 test
 20M -rw-r--r-- 1 moudaen 65536  20M Nov 11 17:44 Gender.war

2.按文件修改时间查看文件
a.按降序,即最近的修改 ls -lt
moudaen@morton:~$ ls -lt
total 19836
-rw-r--r-- 1 moudaen 65536        7 Nov 13 15:30 test.txt
-rw-r--r-- 1 moudaen 65536 20267062 Nov 11 17:44 Gender.war
drwxr-xr-x 2 moudaen 65536     4096 Nov 11 17:44 test
-rw-r--r-- 1 moudaen 65536     5258 Nov 11 11:44 MyApp.java
命令解释:
-t 其实我们用man ls命令就可以看到ls命令带的参数的用法,-t sort by modification time,newest first即按修改时间对文件进行排序,默认是最近修改的在前。
b.那么想升序只需反转下就可以了,所以加上-r参数
ls -lrt
moudaen@morton:~$ ls -lrt
total 19836
-rw-r--r-- 1 moudaen 65536     5258 Nov 11 11:44 MyApp.java
drwxr-xr-x 2 moudaen 65536     4096 Nov 11 17:44 test
-rw-r--r-- 1 moudaen 65536 20267062 Nov 11 17:44 Gender.war
-rw-r--r-- 1 moudaen 65536        7 Nov 13 15:30 test.txt

"

May 05, 16

"创建具有管理员权限的Command命令行快捷方式"

1 - 20 of 3809 Next › Last »
20 items/page

Diigo is about better ways to research, share and collaborate on information. Learn more »

Join Diigo