我试图创建一个zip文件,将在多个服务器上运行,以比较服务器的内容。出于许多原因,最简单和最好的信息,我比较是一个文本文件的目录列表.但我需要没有修改日期,因为他们使比较显示差异,在这种情况下不重要。
因此,如果我运行命令ls -la
来创建文本输出进行比较,我会得到这样的结果:
drwxr-xr-x. 6 root root 4096 Mar 20 14:59 .
dr-xr-xr-x. 22 root root 4096 Feb 18 03:20 ..
drwxr-xr-x. 9 web ad 4096 Oct 30 14:35 apache-tomcat-6.0.18
drwxr-xr-x. 9 web ad 4096 Mar 24 03:00 apache-tomcat-6.0.36
lrwxrwxrwx. 1 root root 5 Oct 30 14:06 java -> java6
lrwxrwxrwx. 1 root root 16 Oct 30 14:05 java6 -> jdk/jdk1.6.0_37/
lrwxrwxrwx. 1 root root 16 Mar 20 14:59 java7 -> jdk/jdk1.7.0_17/
drwxr-xr-x. 4 root root 4096 Mar 20 15:02 jdk
lrwxrwxrwx. 1 root root 21 Nov 6 15:09 tomcat -> apache-tomcat-6.0.36/
字符串
我想使用的是ls -la | cut -c 1-31
,但它只需要一个列表(字符1-31),我真的想要日期之后的数据。我对Unix相当陌生,很好奇是否有人知道如何生成一个看起来像这样的列表:
drwxr-xr-x. 6 root root 4096 .
dr-xr-xr-x. 22 root root 4096 ..
drwxr-xr-x. 9 web ad 4096 apache-tomcat-6.0.18
drwxr-xr-x. 9 web ad 4096 apache-tomcat-6.0.36
lrwxrwxrwx. 1 root root 5 java -> java6
lrwxrwxrwx. 1 root root 16 java6 -> jdk/jdk1.6.0_37/
lrwxrwxrwx. 1 root root 16 java7 -> jdk/jdk1.7.0_17/
drwxr-xr-x. 4 root root 4096 jdk
lrwxrwxrwx. 1 root root 21 tomcat -> apache-tomcat-6.0.36/
型
谢谢
3条答案
按热度按时间xjreopfe1#
发布替代解决方案,因为接受的解决方案将在文件名中包含空格时失败。
在Linux和其他支持它的系统(不包括macOS)上,使用--time-style和空格式
字符串
but5z9lq2#
我认为解决这个问题的最好办法是使用awk。
字符串
所以你得到一个像这样的输出:
型
hwazgwia3#
cut
让我们指定范围,more easily than awk。将其与
tr -s ' '
结合使用可以修剪重复的空格。字符串
这很有用,例如当使用并行shell时,你想检查多个主机上的文件,这些文件是在不同的时间创建的。