我在ksh脚本中使用find命令,我试图只检索文件名,而不是完整路径.在,我希望它返回text.exe,而不是//severname/dir1/dir2/text.exe.
我该怎么做呢?为了澄清,我知道文件所在的目录,我只是抓住了beetoe date的创建者,所以路径名无所谓.
我正在进行某些文本处理操作,最终能够获得这样的文件
india
sudan
japan
france
Run Code Online (Sandbox Code Playgroud)
现在我想在上面的文件中添加注释,就像在最终文件中它应该是类似的
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
Run Code Online (Sandbox Code Playgroud)
像整个文件中的相同评论.我该怎么做呢?
广度优先列表在这里很重要.此外,限制搜索的深度将是很好的.
$ find . -type d
/foo
/foo/subfoo
/foo/subfoo/subsub
/foo/subfoo/subsub/subsubsub
/bar
/bar/subbar
$ find . -type d -depth
/foo/subfoo/subsub/subsubsub
/foo/subfoo/subsub
/foo/subfoo
/foo
/bar/subbar
/bar
$ < what goes here? >
/foo
/bar
/foo/subfoo
/bar/subbar
/foo/subfoo/subsub
/foo/subfoo/subsub/subsubsub
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想使用bash one-liner进行此操作.如果有一个javascript-shell,我会想象类似的东西
bash("find . -type d").sort( function (x) x.findall(/\//g).length; )
Run Code Online (Sandbox Code Playgroud) 我使用以下2个命令创建一个0B文件并将其extn设置为644
touch filename.ext
chmod 777 filename.txt
Run Code Online (Sandbox Code Playgroud)
我的问题是unix(korn shell)中是否有任何一个命令可以将这两个东西放在一起,也就是说创建一个具有所需权限的0B fil?
我是unix的新手,需要一些帮助.我在两个不同的服务器上有两个目录.两个目录都包含相同的文件.现在我想检查两个目录中的所有文件是否同步.如果文件不同步,那么我只想显示这些文件的名称.当目录在同一台服务器上时,我能够做到这一点.当目录存在于两个不同的服务器上时,无法弄清楚如何执行此操作.
eg:
server1 /abc/home/sample1/
server2 /abc/home/sample2/
Run Code Online (Sandbox Code Playgroud)
这里我只希望文件名不同步时显示.
提前致谢
我在ksh中编写了一个shell脚本,将CSV文件转换为Spreadsheet XML文件.它需要一个现有的CSV文件(脚本中的变量路径),然后创建一个新的输出文件.xls.该脚本没有位置参数.CSV的文件名当前已硬编码到脚本中.
我想修改脚本,以便它可以从管道中获取输入的CSV数据,这样.xls输出数据也可以通过管道传输或重定向(>)到命令行上的文件.
这是如何实现的?
我正在努力寻找有关如何编写shell脚本以从管道获取输入的文档.似乎'read'仅用于来自kb的std输入.
谢谢.
编辑:下面的脚本信息(现在修改为通过猫从管道输入,根据问题的答案.
#!/bin/ksh
#Script to convert a .csv data to "Spreadsheet ML" XML format - the XML scheme for Excel 2003
#
# Take CSV data as standard input
# Out XLS data as standard output
#
DATE=`date +%Y%m%d`
#define tmp files
INPUT=tmp.csv
IN_FILE=in_file.csv
#take standard input and save as $INPUT (tmp.csv)
cat > $INPUT
#clean input data and save as $IN_FILE (in_file.csv)
grep '.' $INPUT | sed 's/ *,/,/g' | sed 's/, */,/g' > …Run Code Online (Sandbox Code Playgroud) 对于一个好的bash/ksh脚本模板,你有什么建议可以用作所有新创建的脚本的标准?
我通常#!使用带有文件名,概要,用法,返回值,作者,更改日志的注释掉头开始(在行之后)并且适合80-char行.
所有文档行我都以双哈希符号开头,##因此我可以轻松地为它们grep,本地var名称前面加上"__".
还有其他最佳做法吗?提示?命名约定?返回代码怎么样?
关于版本控制的评论:我们使用SVN可以,但企业中的另一个部门有一个单独的repo,这是他们的脚本.如果没有@author信息,我如何知道与Q联系的人?使用类似于javadocs的条目即使在shell上下文中也有一些优点,恕我直言,但我可能错了.
我有一些shell命令.我想将输出写入标准输出并将其保存到变量中.我想用一个命令来解决它.我试过这些东西.
ls > $VAR # redirects the output to file which name is stored in $VAR
ls | tee -a $VAR # writes to standard output as well as in file which name is stored in $VAR
VAR=`ls` # output into $VAR, but it is not sent to standard output
VAR=`ls`;echo $VAR # ok, it works but these are two commands
Run Code Online (Sandbox Code Playgroud)
任何的想法?
是否有可能找到当前在KornShell(ksh)中执行的脚本的完整路径?
即如果我的脚本在/opt/scripts/myscript.ksh,我可以编程在该脚本内发现/opt/scripts/myscript.ksh吗?
谢谢,
我想要像getche()C中的类似选项.如何从命令行只读取一个字符输入?
read我们可以使用命令吗?