shell获取目录的上级目录_Shell:如何获取文件指定的父目录的名称?(Shell: How to a file's specified parent directory's name?)...

Shell:如何获取文件指定的父目录的名称?(Shell: How to a file's specified parent directory's name?)

我是Shell编程的初学者。 我目前正在编写一个脚本来操作找到的文件。 但我需要获取已找到文件的父目录名称。 例如,

SEARCH_PATH=/home/test

for file in `find $SEARCH_PATH -name "pattern"`;

do

echo $file;

done

在搜索路径中有几个文件夹有文件模式,

/home/test/type1/log/pattern

/home/test/type2/log/pattern

/home/test/type3/log/pattern

我需要做的是在这些文件中找到'pattern',并将祖父母目录的名称改为'type'名称...

I am a beginner for Shell programming. I am currently writing a script to manipulate found files. but I would be needing to get the parent directories' names for found files. For example,

SEARCH_PATH=/home/test

for file in `find $SEARCH_PATH -name "pattern"`;

do

echo $file;

done

in the search path there are several folders have the file pattern,

/home/test/type1/log/pattern

/home/test/type2/log/pattern

/home/test/type3/log/pattern

What I need to do is to find 'pattern' in those files, and also got the grandparent directory's name to the the 'type' name ...

原文:https://stackoverflow.com/questions/16674974

2019-10-23 18:10

满意答案

又脏又快:

kent$ dirname $(dirname "/home/test/type1/log/pattern")

/home/test/type1

如果您的文件名中没有/ ,您也可以使用sed,awk cut ....一个sed示例:

kent$ echo "/home/test/type1/log/pattern"|sed 's#/[^/]*/[^/]*$##'

/home/test/type1

编辑

仅限类型:

basename&dirname:

kent$ basename $(dirname $(dirname "/home/test/type1/log/pattern"))

type1

用awk:

kent$ echo "/home/test/type1/log/pattern"|awk -F'/' '$0=$(NF-2)'

type1

dirty and quick:

kent$ dirname $(dirname "/home/test/type1/log/pattern")

/home/test/type1

if there is no / in your filename, you could also do with sed, awk cut.... one sed example:

kent$ echo "/home/test/type1/log/pattern"|sed 's#/[^/]*/[^/]*$##'

/home/test/type1

EDIT

type only:

basename & dirname:

kent$ basename $(dirname $(dirname "/home/test/type1/log/pattern"))

type1

with awk:

kent$ echo "/home/test/type1/log/pattern"|awk -F'/' '$0=$(NF-2)'

type1

2013-05-21

相关问答

鉴于第1部分(通用前缀)的答案,第2部分的答案是直截了当的; 您将每个名称的前缀分割出来,这可能会在其他选项中使用sed完成。 那么有趣的部分是找到共同的前缀。 最小公共前缀是/ (例如,用于/etc/passwd和/bin/sh )。 最大公共前缀(按定义)出现在所有字符串中,因此我们只需将其中一个字符串拆分为段,并将可能的前缀与其他字符串进行比较。 概述: split name A into components

known_prefix="/"

for each extra componen...

目录版本 get-item是你友好的帮助手。 (get-item $scriptPath ).parent.parent

如果你只想要字符串 (get-item $scriptPath ).parent.parent.FullName

文件版本 如果$scriptPath指向一个文件,那么您必须首先调用Directory属性,因此调用将如下所示 (get-item $scriptPath).Directory.Parent.Parent.FullName

备注 这将仅在$scriptPath...

在R中,相对文件位置总是相对于当前工作目录。 你可以像这样明确地设置你的工作目录: setwd("~/some/location")

一旦设置完成,您可以获取与当前工作目录相关的源文件。 source("some_script.R") # In this directory

source("../another_script.R") # In the parent directory

source("folder/stuff.R") # In a child d...

运行dirname两次(嵌套)。 ~$ dirname $PWD

/home

~$ dirname `dirname $PWD`

/

~$

Run dirname twice (nested). ~$ dirname $PWD

/home

~$ dirname `dirname $PWD`

/

~$

访问URL时,您将无法从Amazon S3获取目录列表页面 。 最接近的是XML对象列表,您必须为其授予对桶策略的ListObjects权限。 它看起来像这样: 此XML文件似乎没有与之关联的任何样式信息。 文档树如下所示。

my-bucket

1000

引用File.getParent() javadoc(强调我的): 返回此抽象路径名父级的路径名字符串,如果此路径名未命名父目录,则返回null 。 抽象路径名的父节点由路径名的前缀(如果有)和路径名名称序列中除最后一个以外的每个名称组成。 如果名称序列为空,则路径名不会命名父目录。 请记住, File对象表示路径字符串 ,而不是文件系统上的实际文件。 字符串""没有父项。 字符串"a/b/c"具有"a/b"作为父项,即使它们没有物理存在。 所以,首先你必须通过调用getCanonicalFile...

你不能。 也apt 。 软件包管理器只需将所需的数据/变量写入文件中,然后由程序本身,程序的补丁或包装器读取。 好的例子可以在/etc/default/* 。 这些文件具有可变定义,有些甚至可以帮助描述它们的来源: $ cat /etc/default/ssh

# Default settings for openssh-server. This file is sourced by /bin/sh from

# /etc/init.d/ssh.

# Options to pass to ssh...

标准C中没有这样的功能。您可以在Windows上尝试运气:GetFullPathName http://msdn.microsoft.com/en-us/library/aa364963%28v=vs.85%29.aspx 然后也许_splitpath http://msdn.microsoft.com/en-us/library/e737s6tf%28v=vs.80%29.aspx 但是正如所写的那样,做这类事情并不是标准功能。 There is no such function in Stan...

这是因为$对Make有特殊的含义,所以如果你想把它传递给shell,你必须“逃避”它。 如果是Make,你可以通过加倍来逃避美元符号。 所以你必须使用$$PWD 。 另外,你所做的并不是最好的方法 - 如果可能的话,最好避免使用shell并使用Make功能。 在你的情况下,做你想要的最好的方法是: BUILD_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))/../../build)

你必须把上面的行放在make文件中,靠近最上面,这样它才...

又脏又快: kent$ dirname $(dirname "/home/test/type1/log/pattern")

/home/test/type1

如果您的文件名中没有/ ,您也可以使用sed,awk cut ....一个sed示例: kent$ echo "/home/test/type1/log/pattern"|sed 's#/[^/]*/[^/]*$##' ...

相关文章

Gao Yuanyuan from after 2005 drama " world fir

...

出现bad interpreter:No such file or directory的原因 是文件格

...

这篇文件写的非常好,推荐大家重温一下: http://highscalability.com/blog

...

调用文件系统(FS)Shell命令应使用 bin/Hadoop fs <args>的形式。

...

Data Week: Becoming a data scientist Data Pointed,

...

Windowsis an extremely effective and a an efficient

...

hadoop变得越来越热门,但是hadoop的设计是用来处理静态数据和批处理任务,流处理实施起来不是很

...

http://www.codeproject.com/Articles/42799/Storm-the

...

Bottega Veneta ogłoszenie Fire continues Daleko ali

...

http://spark-project.org/ 项目首页 http://shark.cs.berk

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值