使用bash,我需要在当前目录和子目录中找到所有GIF,并以特定方式显示它们。我也必须包含隐藏文件,我不允许使用grep(或其子公司--fgrep等)或basename。我正在运行Ubuntu 14.04通过虚拟机(VirtualBox通过Vagrant,如果这很重要)没有GUI。我当前的脚本如下所示:
#!/bin/bash
ls -a | find $directory -type f -name "*.gif" | rev | cut -d/ -f1 | rev | cut -d. -f1 | sort -f
这主要完成了我需要的工作,特别是在格式化方面,但当我将其中一个GIF更改为隐藏文件时,它不再可见 - 有一个额外的空行,几乎就像文件名是用隐形墨水书写。有谁知道它为什么要这样做?
答案 0 :(得分:0)
你想要达到的目标不是很清楚。
正如潜伏者在评论cut -d. -f1
中所说,任何以.
开头的行都是空行。
从您的代码中,我能想到的最接近的是
find $directory -type f -iname '*.gif' | rev | cut -d/ -f1 | cut -d. -f2,3 | rev | sort -f
给你所有隐藏与否的GIF,没有路径或扩展。
user@host /tmp % ls -aR
.:
. .. subdirectory .test.gif test.gif
./subdirectory:
. .. .sub.gif sub.gif
user@host /tmp % find . -type f -iname '*.gif' | rev | cut -d/ -f1 | cut -d. -f2,3 | rev | sort -f
sub
.sub
test
.test