小编Jah*_*hid的帖子

通过删除linux中的url参数重命名文件

我使用下载了一些文件,文件格式如下:

test.zip?AWSAccesskeyId=XXXXXXX&Expires=00000000&Signature=ZZZZZZZZZZ
Run Code Online (Sandbox Code Playgroud)

有没有办法,通过删除URL参数正确重命名这些文件.也有任何方法,下载这样的文件,具有正确的名称(没有URL参数)wget.

我尝试使用mmv以下命令:

mmv "*.zip*" "#1.zip"
Run Code Online (Sandbox Code Playgroud)

但我找不到任何安装方法mmv.我正在使用CentOS 6.所以,请以任何方式提出建议,除此之外.

linux shell file file-rename batch-rename

5
推荐指数
1
解决办法
2411
查看次数

删除除文件扩展名以外的所

假设我有一个字符串:

x=file.tar.sh
Run Code Online (Sandbox Code Playgroud)

我知道除了最后的n个字符之外如何删除所有内容.像这样(除去最后3个字符的所有内容:

${x: -3}
Run Code Online (Sandbox Code Playgroud)

但这对于具有不同后缀长度的文件不起作用.(len .tar!= len .sh)

我会通过删除所有内容直到最后一个点来解决这个问题.我试过这个:

${x##.}
Run Code Online (Sandbox Code Playgroud)

这将删除最长的匹配,直到"." 但不知何故,它只是返回完整的字符串而不删除任何东西?

linux bash

5
推荐指数
1
解决办法
188
查看次数

mongoexport最近来自mongodb的小时数据

我是mongodb的新手.我想在最近几小时从我的数据库中导出一些数据.所以,我认为我需要编写mongoexport命令并在--query选项中包含日期范围来执行此操作.

我写这样的bash文件并尝试运行它:

#!/bin/bash

mongoexport --host localhost:27017 --db copy --collection txt --csv --fields x1,x2,x3...,date --query '{ "date" : {$gt:new Date(new Date() - 1000*60*60*3)} }' --out home/data.csv 
Run Code Online (Sandbox Code Playgroud)

但我得到的结果是:

connected to: localhost:27017
assertion: 16619 code FailedToParse: FailedToParse: Expecting '}' or ',': offset:25 of:{ "date" : {$gt:new Date(new Date() - 1000*60*60*3)} }
Run Code Online (Sandbox Code Playgroud)

它看到连接到localhost但无法输出数据.如果我删除--query选项,这可以成功运行并获取整个数据,但我必须要求查询在最近3小时内对数据进行子集化.

任何想法和帮助将受到高度赞赏.谢谢你和Best.

csv bash date mongodb

5
推荐指数
1
解决办法
671
查看次数

takePicture在棒棒糖中失败了

以下代码在服务中拍摄背景图片.它适用于棒棒糖下面的所有版本,但在运行时例外takePicture(null,null,mcall).有任何想法吗..?

   public void takePictures(final int delay) 
{
      final Camera.PictureCallback mCall = new Camera.PictureCallback() {
            @Override
            public void onPictureTaken(byte[] data, Camera camera) {
                Log.e(TAG, "Picture taken, saving....");
                Uri uriTarget = getContentResolver().insert//(Media.EXTERNAL_CONTENT_URI, image);
                        (MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
                OutputStream imageFileOS;
                try {
                    imageFileOS = getContentResolver().openOutputStream(uriTarget);
                    imageFileOS.write(data);
                    imageFileOS.flush();
                    imageFileOS.close();
                    Log.e("Image saved: ", uriTarget.toString());
                    savePictures(getRealPathFromURI(uriTarget.toString()));
                    mCamera.stopPreview();
                    mCamera.release();
                    mCamera = null;

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    Log.e("Image not  saved: ", e.toString());
                } catch (IOException e) {
                    Log.e("Image not  saved:2 ", e.toString());
                    e.printStackTrace();
                }

            } …
Run Code Online (Sandbox Code Playgroud)

service camera android

5
推荐指数
0
解决办法
1191
查看次数

带引号的文件内容的命令行参数

我有一个包含命令行参数的文件,我想传递给另一个脚本.

但是这个文件包含诸如的元素"param 1" param2 param3.

让我们用参数test.tmp和脚本文件调用该文件script.sh.

如果我做:

script.sh -p `cat test.tmp` -other_params 1 2 3
Run Code Online (Sandbox Code Playgroud)

script.sh之后接受p:

  1. "param
  2. 1"
  3. param2
  4. param3

但我想:

  1. param 1
  2. param2
  3. param3

任何的想法?

精度小:假设script.sh不可修改.解决方案必须在shell中进行.

bash shell

5
推荐指数
2
解决办法
141
查看次数

仅显示与 grep 匹配的字符串

我有一个要匹配的文件,如下所示:

...
new VideoInfo(6, VideoType.Flash, 270, false, AudioType.Mp3, 64, AdaptiveType.None),
new VideoInfo(13, VideoType.Mobile, 0, false, AudioType.Aac, 0, AdaptiveType.None),
new VideoInfo(17, VideoType.Mobile, 144, false, AudioType.Aac, 24, AdaptiveType.None),
... [a few hundred more entries like these]
Run Code Online (Sandbox Code Playgroud)

我有以下正则表达式模式来匹配第一个数字:

grep "new VideoInfo(.*," VideoInfo.cs
Run Code Online (Sandbox Code Playgroud)

问题是,grep 发出匹配的整行,而不仅仅是6 13 17 ....

我怎样才能让它只回显匹配的结果?


编辑:我在每new VideoInfo ...行前面都有尾随空格。

regex bash grep match

5
推荐指数
3
解决办法
7094
查看次数

sed 替换,包括换行

我想更改一个文本文件,以便将任何以“Length:”开头的行附加到一行。

我知道这sed '/\nLength:/ Length:/'是行不通的,因为它sed是基于行的。

谷歌搜索“如何匹配 sed 中的换行符”确实找到了一种复杂的 sed 方法,用于将模式连接到下一行,但我不知道如何调整它。

帮助将不胜感激。

regex awk sed

5
推荐指数
1
解决办法
222
查看次数

如何检查是否在expect脚本中设置了变量?

我正在做这样的事情:

#!/usr/bin/expect -f

if {$out != ""} {
  send_user $out
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.错误信息:

can't read "out": no such variable
    while executing
"if {$out != ""} {
send_user $out
}"
    (file "./test" line 3)
Run Code Online (Sandbox Code Playgroud)

tcl expect

5
推荐指数
1
解决办法
6954
查看次数

如何使用shell脚本查找Linux Distribution名称?

我正在编写一个shell脚本,其中我需要当前的操作系统名称以使其通用.喜欢:

if [ $Operating_System == "CentOS" ]
then
    echo "CentOS";
    # Do this
elif [ $Operating_System == "Ubuntu" ]
then
    echo "Ubuntu";
    # Do that
else
    echo "Unsupported Operating System";
fi
Run Code Online (Sandbox Code Playgroud)

怎么可能?在lsb_release -a命令或其他东西上应用正则表达式?

谢谢..

regex linux bash shell operating-system

4
推荐指数
2
解决办法
5503
查看次数

如何否定fish shell中if语句的程序错误代码?

我想做一些像这些语句中的任何一个,这可能像bash,但收到错误:

if ! prog ...
  ....
Run Code Online (Sandbox Code Playgroud)

错误: fish: Unknown command '! prog ...'

if test ! prog ...
  ....
Run Code Online (Sandbox Code Playgroud)

错误: test: Expected a combining operator like '-a' at index 2

shell fish

4
推荐指数
1
解决办法
653
查看次数

标签 统计

bash ×5

shell ×4

linux ×3

regex ×3

android ×1

awk ×1

batch-rename ×1

camera ×1

csv ×1

date ×1

expect ×1

file ×1

file-rename ×1

fish ×1

grep ×1

match ×1

mongodb ×1

operating-system ×1

sed ×1

service ×1

tcl ×1