我有一个文件目录music/artist/{random_name}/{random_music}.ogg
{random_name}
中有很多文件夹,音乐标题为{random_music}
。
因此,我想将{random_music}.ogg
重命名为music.ogg
。每个{random_name}
文件夹只有一个.ogg文件。
我已经尝试了Bash脚本几个小时,但没有找到答案。
for f in ../music/artist/*/*.ogg
do
echo mv "$f" "${f/.*.ogg/music.ogg}"
done
它仅重命名我当前目录中的文件,这将要求替换/覆盖。
我的目标是,我想用其各自的目录将所有{random_music}.ogg
文件重命名为music.ogg
music/artist/arai/blue.ogg
至music/artist/arai/music.ogg
music/artist/sako/sky.ogg
至music/artist/sako/music.ogg
答案 0 :(得分:1)
您的图案替换不正确。由于您所有的路径都以..
开头,因此.*.ogg
实际上与整个路径匹配,因此每个文件在您的文件中都变成了music.ogg
当前目录。
您想改用${f/\/*.ogg/music.ogg}
,或者最好改用${f%/*}/music.ogg
。大致相当于"$(dirname "$f")"/music.ogg
。
答案 1 :(得分:0)
我通常这样使用:
for f in ../music/artist/*/*.ogg
do
dest="${f/.*.ogg/music.ogg}"
if [[ $f != "$dest" ]] # nothing to do if name doesn't change
then
if [[ -a $dest ]]
then
printf 'WARNING: File already exists: %s\n' "$dest"
else
mv "$f" "$dest"
fi
fi
done
答案 2 :(得分:0)
您可以像这样更改代码
accumulate()
这里for f in ../music/artist/*/*.ogg
do
echo mv $f "$(dirname "$f")"/music.ogg
done
将从变量中提取目录名称,您可以将其附加到dirname
上以得到所需的结果。
对于您提供的示例路径
如果music.ogg
等于$f
,那么结果将是
music/artist/arai/blue.ogg
答案 3 :(得分:0)
我希望这对您有帮助:
以前:
let imageGenerator = AVAssetImageGenerator(asset: playerItem.asset)
let progressSeconds = playerItem.duration.seconds * Double(progress)
let time = CMTime(seconds: progressSeconds, preferredTimescale: 5)
if let imageRef = try? imageGenerator.copyCGImage(at: time, actualTime: nil) {
image = UIImage(cgImage:imageRef)
}
源代码:
let videoThumbnailsOutput = AVPlayerItemVideoOutput(pixelBufferAttributes: [String(kCVPixelBufferPixelFormatTypeKey): NSNumber(value: kCVPixelFormatType_32BGRA)])
player?.currentItem?.add(videoThumbnailsOutput)
if let pixelBuffer = videoThumbnailsOutput.copyPixelBuffer(forItemTime: time, itemTimeForDisplay: nil) {
let ciImage = CIImage(cvPixelBuffer: pixelBuffer)
执行后:
[root@user]# tree music
music
└── artist
├── df
│ └── mp.ogg
├── gh
│ └── pl.ogg
├── jk
│ └── gl.ogg
├── po
│ └── ui.ogg
├── ty
│ └── lk.ogg
└── ui
└── dh.ogg
7 directories, 6 files
您会看到所有文件都已正确重命名。
答案 4 :(得分:0)
@model FuelActivityTrackerDal.Models.ActivityHeader
<div class="k-edit-form-container">
<h3>Activity</h3>
<br />
@Html.HiddenFor(model => model.Name)
<div class="k-edit-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="k-edit-label">
@Html.LabelFor(model => model.ActivityDate)
</div>
<div class="k-edit-field">
@Html.Kendo().DateTimePickerFor(model => model.ActivityDate)
@Html.ValidationMessageFor(model => model.ActivityDate)
</div>
</div>
这是一种单线工作。它执行find命令的exec选项,然后获取目录名称,并将原始文件重命名为music.ogg。