我有许多名为<div>
<input type='text' maxlength="25" id='first-name' placeholder="First Name">
</div>
<button type="button" onclick="alert($('#first-name').val())">Click Me! </button>
的目录,其中201801XX_samename_stillsame
发生了变化,其余的保持不变。其中包含所有具有相同名称的文件,例如XX
。我需要一个filename.png
脚本来根据目录名称的可变部分来更改bash
,例如
filename.png
答案 0 :(得分:2)
for dir in 201801*_samename_stillsame/; do
cp "$dir/filename.png" "${dir:7:2}.png"
done
为每个目录复制文件。 ${dir:7:2}
是变量的子字符串,从第7个字符开始即2个字符(即“ XX”部分)。
答案 1 :(得分:2)
for d in $(ls -d 2018*_samename_stillsame); do
mv $d/{filename,$(echo "$d" | cut -d '_' -f1)}.png;
done
编辑:基于@ kamil-cuk的答案,并且因为我没有意识到您只想要 XX部分
for d in $(ls -d 2018*_samename_stillsame); do
mv $d/{filename,${d:6:2}}.png;
done
在我的情况下,测试索引实际上从0开始而不是1,因此要获得第七个字符,您需要在6处进行切片
答案 2 :(得分:1)
您可以使用:
shopt -s nullglob
kn='_samename_stillsame/'
for f in **"$kn"; do
mv -- "$f/filename.png" "$f${f%%$kn}.png"
done
答案 3 :(得分:1)
查找所有目录名称,使用sed
构造一个mv
命令,并使用e
选项执行构造的命令。
find 201801* -maxdepth 1 -type d |
sed -r 's#201801(..)_samename_stillsame#mv &/filename.png &/\1.png#e'