我想分别获取文件名(没有扩展名)和扩展名.
我到目前为止找到的最佳解决方案是:
NAME=`echo "$FILE" | cut -d'.' -f1`
EXTENSION=`echo "$FILE" | cut -d'.' -f2`
Run Code Online (Sandbox Code Playgroud)
这是错误的,因为如果文件名包含多个.字符,它将不起作用.如果,让我们说,我有a.b.js,它会考虑a和b.js,而不是a.b和js.
它可以在Python中轻松完成
file, ext = os.path.splitext(path)
Run Code Online (Sandbox Code Playgroud)
但是如果可能的话,我宁愿不为此启动Python解释器.
有更好的想法吗?
我有一个变量,其中包含目录路径以及文件名.我想从Unix目录路径中单独提取文件名并将其存储在变量中.
fspec="/exp/home1/abc.txt"
Run Code Online (Sandbox Code Playgroud) 在bash我尝试glob从目录中的文件列表,以作为程序的输入.但是,我还想给这个程序提供文件名列表
files="/very/long/path/to/various/files/*.file"
Run Code Online (Sandbox Code Playgroud)
所以我可以这样使用它.
prompt> program -files $files -names $namelist
Run Code Online (Sandbox Code Playgroud)
如果glob给我:
/very/long/path/to/various/files/AA.file /very/long/path/to/various/files/BB.file /very/long/path/to/various/files/CC.file /very/long/path/to/various/files/DD.file /very/long/path/to/various/files/ZZ.file
Run Code Online (Sandbox Code Playgroud)
我想获得AA BB CC DD ZZ的列表,以便在没有长路径名和文件扩展名的情况下提供我的程序.但是我不清楚如何从那里开始!任何提示非常感谢!
我已经symlink命名CURRENT为指向一个目录,可以说
CURRENT -> $HOME/local/java/jdk1.8.0
Run Code Online (Sandbox Code Playgroud)
我想将jdk1.8.0部分提取为字符串。
首先,我通过以下方式获取目录:
current_dir= $(readlink -f $CURRENT)
Run Code Online (Sandbox Code Playgroud)
然后,我尝试提取路径的最后一部分:
last_part= ${current_dir##*/}
Run Code Online (Sandbox Code Playgroud)
或者甚至当我尝试通过以下方式打印它时:
echo $current_dir
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
bash: /home/tarrsalah/local/java/jdk1.8.0: Is a directory
Run Code Online (Sandbox Code Playgroud)
如何将目录转换为字符串?
我正在尝试将以下内容作为应用程序启动脚本的一部分运行:
for file in $TEMPLATE_FOLDER/*
do
filename='basename $file'
echo "Processing $filename"
if [ -f "$CONF_FOLDER/$filename" ]
then
echo "Using existing $filename"
else
echo "Creating $filename from template $file"
cp $file $CONF_FOLDER
fi
done
Run Code Online (Sandbox Code Playgroud)
但输出是:
Processing basename $file
Creating basename $file from template ../conf/templates/conf-TEST/log4j.xml
Run Code Online (Sandbox Code Playgroud)
basename 命令不会被评估,只是被打印出来。
当我从提示符运行命令时,它工作正常。
bash 版本:
bash -version
GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10)
Copyright (C) 2004 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)
谁能看到我做错了什么?
谢谢!