我在不同的目录中有多个文件。他们看起来像这样
/home/usr/data/folder_K123_A01/file/Sample_K123_1_ID33/K123_1_ID33.txt
/home/usr/data/folder_J337_B02/file/Sample_J337_4_ID46/J337_4_ID46.txt
/home/usr/data/folder_L711_C03/file/Sample_L711_13_ID07/L711_13_ID07.txt
A01
,B02
,C03
由机器生成;不太具体。它可以使用*
自动填充这些值。
如果我想转到L711_13_ID07
目录,我会使用
cd /home/usr/data/folder_L711*/ -> tab, enter
cd /file
cd /Sample_L711_13_ID07
现在,需要快速在这些目录之间移动。因此,尝试撰写脚本movequick.sh
以快速将输入filenames
和cd
带到每个目录。
目前的代码是
Filename=$1
FD=`echo $Filename|cut -f1 -d'_'`;
cd /home/usr/data/folder_$FD_*/file/Sample_$Filename/
我做
./movequick L711_13_ID07
但是,系统给了我
line 3: cd: /home/usr/data/folder_L711_*/file/Sample_L711_13_ID07/: No such file or directory
我想我错过了一个标签。我也试图将这个脚本放到我的.bashrc
中,以确保我可以快速移动。
需要一些建议。感谢。
答案 0 :(得分:1)
您可以使用:
filename="$1"
fd="${filename%%_*}"
cd /home/usr/data/folder_"${fd}"_*/file/Sample_"${filename}"/
在此变量名称和${fd}
之后使用_
时使用_
很重要。在变量名$fd_
中,下划线被视为变量名称的一部分。
答案 1 :(得分:0)
当文件夹生成一次并在此之后修复时,您可以设置一堆别名,如
cdk123="cd /home/usr/data/folder_K123_A01/file/Sample_K123_1_ID33/K123_1_ID33.txt"
cdj337="cd /home/usr/data/folder_J337_B02/file/Sample_J337_4_ID46/J337_4_ID46.txt"
cdl711="cd /home/usr/data/folder_L711_C03/file/Sample_L711_13_ID07/L711_13_ID07.txt"
将这些放在.bashrc中,登录后(或获取文件)可以使用cdk123
之类的内容。
在登录会话期间修复文件夹后,您可以从.bashrc
生成这些别名
在会话期间变量时,可以在cd命令中使用通配符:
cd /home/usr/data/*/*/*L711_13_ID07
您是否想要使用TAB,您无需一直使用输入: 如果要移至L711_13_ID07的目录,请使用
cd /home/usr/data/folder_L711
- >标签f
- >标签S
- >选项卡ENTER
在尝试使用脚本之前使用选项卡选项进行播放。当bash不知道你想要哪个文件/文件夹时(两个dirs都以f开头),再次点击标签:在2个标签后你会看到一个可能的列表。添加一些字母并再次点击标签。
如果您的历史记录中有cd命令,请尝试^r cd
并点击^r
直到看到某些内容。