相关疑难解决方法(0)

在linux中查找文件并排除特定目录

我有一个看起来像这样的发现:

rm -f crush-all.js
find . -type f \( -name "*.js" ! -name "*-min*" ! -name "*console*" \) | while read line
do
   cat "$line" >> crush-all.js
   echo >> crush-all.js
done
Run Code Online (Sandbox Code Playgroud)

我想添加以排除查找中名为“test”的目录,但我似乎无法弄清楚如何以某种方式添加“-type d”。我是怎么做的?

谢谢!

find

18
推荐指数
1
解决办法
6万
查看次数

gzip 具有特定扩展名的所有文件

我正在尝试 gzip ubuntu 上所有文件扩展名为 .css、.html 或 .js 的文件。在顶级目录和所有子目录中。我想保留原始文件并覆盖 .gz 文件(如果已经存在)。

所以当我有 n 个文件时,我想保留这 n 个文件并创建额外的 n 个存档文件。不止一个。

我的尝试是运行一个如下所示的脚本:

gzip -rkf *.css
gzip -rkf *.html
... one line for each file extension
Run Code Online (Sandbox Code Playgroud)

第一:对于我想要 gzip 的每个文件扩展名,我需要在该脚本中有一行。没关系,但我希望找到更好的方法

其次,更重要的是:它不起作用。虽然 -r 应该完成这项工作,但子目录没有改变。gzip 文件仅在顶级目录中创建。

我在这里缺少什么?

顺便说一句:以下是详细输出中的错误,对吗?使用 -k 和 -v 选项时

-k, --keep        keep (don't delete) input files
-v, --verbose     verbose mode
Run Code Online (Sandbox Code Playgroud)

详细输出说它替换了文件,尽管“替换”意味着替换后原始文件不存在。无论如何,这只是输出的东西。

$ ls
  index.html      subdir1  testfile      testfile.css.gz
  javaclass.java  subdir2  testfile.css
$ gzip -fkv *.css
  testfile.css:   6.6% -- replaced with testfile.css.gz
$ ls
  index.html      subdir1  testfile …
Run Code Online (Sandbox Code Playgroud)

gzip

14
推荐指数
3
解决办法
3万
查看次数

如何启用双星**(globstar)运算符?

我知道有一个类似于 的运算符*,不同之处在于它适用于所有子目录。

假设您有一个文件夹结构:

.
??? bar
?   ??? foo
?   ?   ??? baz
?   ?       ??? hurz
?   ?           ??? lolz
?   ?               ??? hello.txt
?   ??? poit.txt
??? fnord.txt
Run Code Online (Sandbox Code Playgroud)

然后ls用单星*将列出:

$ ls *.txt
fnord.txt
Run Code Online (Sandbox Code Playgroud)

我希望双星操作员**能够处理子文件夹,但它还没有完成。我知道这可以工作,因为我在另一台机器上启用了它,但我忘记了如何。

$ ls **/*.txt
bar/poit.txt
Run Code Online (Sandbox Code Playgroud)

我期待输出看起来像:

ls **/*.txt
bar/foo/baz/hurz/lolz/hello.txt  bar/poit.txt  fnord.txt
Run Code Online (Sandbox Code Playgroud)

如何**调用接线员以及如何正确激活它?

command-line bash

8
推荐指数
1
解决办法
3758
查看次数

标签 统计

bash ×1

command-line ×1

find ×1

gzip ×1