linux怎样将文件覆盖到另一个文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux怎样将文件覆盖到另一个文件相关的知识,希望对你有一定的参考价值。

linux实用命令之如何移动文件夹及文件下所有文件 格式:mv [选项(option)] 源文件或目录 目标文件或目录使用命令:mv webdata /bin/usr/可以延伸一下:mv /usr/lib/* /zone 是将 /usr/lib/下所有的东西移到/zone/中。 mv /usr/lib/*.txt /zone 是将lib下以txt结尾的所有文件移到/zone中。 其他类型,以此类推。具体说明如下:1.作用 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令等同于DOS系统下的ren和move命令的组合。它的使用权限是所有用户。 2.格式 mv [options] 源文件或目录 目标文件或目录 3.[options]主要参数(几个重要的参数) -i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件。 -f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。- r 指示mv将参数中列出的全部目录和子目录均递归地移动。 4.第二个参数 当第二个参数类型是文件时,mv命令完成文件重命名,它将所给的源文件或目录重命名为给定的目标文件名。 当第二个参数是已存在的目录名称时, 参考技术A 如果是非文本文件,只需要用mv命令,把一个文件名更改成你想要的那个文件名即可,比如mv name1.sql name.sql 参考技术B 回答

所谓的让一个文件覆盖到另一个文件上是指用同名文件替换,方法是: 1.假定你的原文件“A”是放在C盘的“Program Files”的“XXX”文件夹里。 2.选定你的现有文件“A”并复制。 3.再打开C盘的“Program Files”的“XXX”文件夹,进行粘贴,这时会出现是否替换的文件

所谓的让一个文件覆盖到另一个文件上是指用同名文件替换,方法是:

1.假定你的原文件“A”是放在C盘的“Program Files”的“XXX”文件夹里。

2.选定你的现有文件“A”并复制。

3.再打开C盘的“Program Files”的“XXX”文件夹,进行粘贴,这时会出现是否替换的询问,你选择“是”即可。

注:1.要让一个文件覆盖到另一个文件上必须知道原文件的存放位置。

2.原文件和现有文件一定是同名的。

参考技术C cp -rf file1 file2

c#: 将 mp3 文件覆盖到另一个文件

【中文标题】c#: 将 mp3 文件覆盖到另一个文件【英文标题】:c#: Overlay mp3 file to another 【发布时间】:2013-09-16 12:13:35 【问题描述】:

我仅使用以下代码将 3 个 mp3 文件合并为一个 mp3 文件

using (var fs = File.OpenWrite(Path.Combine(txtOutputFile.Text, "new.mp3")))
            
                var buffer = File.ReadAllBytes(Path.Combine(txtIntroLoc.Text, fileName1));
                fs.Write(buffer, 0, buffer.Length);
                buffer = File.ReadAllBytes(Path.Combine(txtOutroloc.Text, fileName2));
                fs.Write(buffer, 0, buffer.Length);
                buffer = File.ReadAllBytes(Path.Combine(txtFileThree.Text, fileName3));
                fs.Write(buffer, 0, buffer.Length);
                fs.Flush();
            

我想要的是覆盖另一个 mp3 文件,它将在这个新创建的 mp3 文件的背景中播放。我知道这是可能的,但没有找到正确的方法来实现这一目标。任何帮助都会很棒。 谢谢

【问题讨论】:

如果合并这样的 MP3 文件确实有效,我会感到惊讶。您是否尝试过播放生成的文件? 谷歌搜索的第二个链接overlay mp3 c#。 @Surfbutler,这对我来说也很有趣,但它的工作原理:) 好吧,那太好了 :) 我想覆盖另一个轨道会困难得多,因为它涉及对原始和新的采样,然后创建一个新的组合文件。我猜那里有一个 MP3 api 可能会有所帮助。 如果您正在查看覆盖文件,请查看FFMpegConverter。您需要做的就是安装 NuGet 包 (NReco.VideoConverter) 并调用 .Invoke("arguments found in link");。命令链接:***.com/a/11783474 【参考方案1】:

关于“叠加”的问题:

如果不将原始文件解码为 PCM,在叠加层中混合,然后将整个内容重新编码为 MP3,则无法做到这一点。

在您现有的代码上:

您可以像这样连接 MP3 文件。通常虽然我会建议放弃 ID3 标签,只制作一个包含每个文件的 MP3 帧的文件。如果您使用的是 NAudio,那么您可以使用 Mp3FileReader 上的 ReadNextFrame() 方法来获取每个 MP3 帧并将其 RawBytes 写入文件。

为了获得最佳效果,您希望所有 MP3 文件都使用相同的采样率和通道数。此外,如果这些是 VBR,您将使 XING or VBRI headers 中的信息无效,因此最好也放弃这些信息。

【讨论】:

谢谢马克,我现在已经转移到 NAudio 来合并两个 mp3 文件。我想知道任何将 mp3 文件覆盖在另一个文件上的示例,因为我从未使用过解码和重新编码。【参考方案2】:

终于找到了解决办法。使用NAudio,我们可以混合wav流,因此首先将mp3转换为wav,然后混合wav文件,然后使用lame.exe将生成的wav文件重新转换为mp3。

感谢 Mark Heath,可以使用以下代码使用 NAudio 库将 MP3 转换为 WAV。

string file = "new.mp3";
            Mp3FileReader readers = new Mp3FileReader(file);
            WaveFormat targetFormat = new WaveFormat();
            WaveStream convertedStream = new WaveFormatConversionStream(targetFormat, readers);
            WaveFileWriter.CreateWaveFile("firstwav.wav", convertedStream);

现在可以使用此代码使用 NAudio 类将其与另一个 wav 文件混合。

string[] inputFiles = new string[2];
            Stream output = new MemoryStream();
            inputFiles[0] = "firstwav.wav";
            inputFiles[1] = "secondwav.wav";
mixWAVFiles(inputFiles);

mixWAVFiles 方法

public void mixWAVFiles(string[] inputFiles)
        
            int count = inputFiles.GetLength(0);
            WaveMixerStream32 mixer = new WaveMixerStream32();
            WaveFileReader[] reader = new WaveFileReader[count];
            WaveChannel32[] channelSteam = new WaveChannel32[count];
            mixer.AutoStop = true;

            for (int i = 0; i < count; i++)
            
                reader[i] = new WaveFileReader(inputFiles[i]);
                channelSteam[i] = new WaveChannel32(reader[i]);
                mixer.AddInputStream(channelSteam[i]);
            
            mixer.Position = 0;
            WaveFileWriter.CreateWaveFile("mixedWavFile.wav", mixer);
        

现在终于使用 lame.exe 将 finalwav 文件转换为 mp3 找到 here

public void convertWAVtoMP3(string wavfile)
        
            //string lameEXE = @"C:\Users\Jibran\Desktop\MP3 Merger\bin\Debug\lame.exe";
            string lameEXE = Path.GetDirectoryName(Application.ExecutablePath) +"/lame.exe";
            string lameArgs = "-V2";

            string wavFile = wavfile;
            string mp3File = "mixed.mp3";

            Process process = new Process();
            process.StartInfo = new ProcessStartInfo();
            process.StartInfo.FileName = lameEXE;
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.StartInfo.Arguments = string.Format(
                "0 1 2",
                lameArgs,
                wavFile,
                mp3File);

            process.Start();
            process.WaitForExit();

            int exitCode = process.ExitCode;

【讨论】:

以上是关于linux怎样将文件覆盖到另一个文件的主要内容,如果未能解决你的问题,请参考以下文章

linux cp命令一个目录复制到另一个目录

linux怎么将一个文件移动到另一个目录下

怎样在linux中覆盖文件夹以及文件夹里的文件

c#: 将 mp3 文件覆盖到另一个文件

将文件复制到另一个文件夹,在目的地重命名并覆盖现有文件

如何将一个远程分支覆盖而不是合并到另一个分支?