我有一堆文件名中包含“_001”的文件。我按照在线发布的脚本进行操作,我位于所有文件所在的目录中:
filez <- list.files()
sapply(filez, function(X) {file.rename(from=x, to=sub(pattern="_001", replacement="", x))})
Run Code Online (Sandbox Code Playgroud)
但我不断收到此错误消息:
file.rename(from = x, to = sub(pattern = "001", replacement = "")) 中的错误:找不到对象“x””。
谁能帮我解决这个问题?
这是当前的文件夹结构:
/home/ubuntu/Desktop/pictures/
/home/ubuntu/Desktop/pictures/folder1
/home/ubuntu/Desktop/pictures/folder1/John Doe - 1234567.JPG
/home/ubuntu/Desktop/pictures/folder2
/home/ubuntu/Desktop/pictures/folder2/Homer Simpson - 7654321.jpg
/home/ubuntu/Desktop/pictures/folder2/Lisa Simpson - 321456.jpg
/home/ubuntu/Desktop/pictures/folder3
/home/ubuntu/Desktop/pictures/folder3/Foo Bar - 234123.JPG
/home/ubuntu/Desktop/pictures/folder3/Bar Foo - 876542.JPG
Run Code Online (Sandbox Code Playgroud)
我想要的是构建一个脚本,循环遍历“图片”文件夹中的所有文件夹,并将所有“JPG”和“jpg”文件重命名为其数值,以便文件名“John Doe - 1234567.JPG” ”将变成“1234567.JPG”。
我确实尝试了一些 shell 脚本,但只有当 jpg 文件位于一个文件夹中时,我才能正常工作:
ubuntu@ubuntu:~/Desktop/pictures/in_one_folder$ ls
John Doe - 1234567.JPG Foo Bar - 234123.JPG
Homer Simpson - 7654321.jpg Bar Foo - 876542.JPG
Lisa Simpson - 321456.jpg script.sh
Run Code Online (Sandbox Code Playgroud)
开始这个脚本:
for f in *JPG *jpg;
do
file=$f
remove_non_numeric=$(echo "$file" | sed 's/[^0-9]*//g')
add_extension="$remove_non_numeric.jpg"
echo "$add_extension"
mv "$file" "$add_extension"
done
Run Code Online (Sandbox Code Playgroud)
结果如下:
ubuntu@ubuntu:~/Desktop/pictures/in_one_folder$ …Run Code Online (Sandbox Code Playgroud) 此问题使用 Git 2.7.0.windows.1,因此某些 git 命令可能已过时。
如果我的git merge命令没有检测到重命名的文件,我如何告诉 git 手动合并两个本应是单个文件的文件中的更改,而不需要重新开始合并并使用较低的重命名阈值?
复制步骤:
git init
echo "//Hello world!" > hw.h
git add . && git commit -m "Initial commit"
git checkout -b someBranch
mv hw.h hw.hpp
echo "//Foobar" > hw.hpp
git add . && git commit -m "Change hw to HPP & change content"
git checkout master
echo "//Boofar" > hw.h
git add . && git commit -m "Change content of hw"
git merge -X rename-threshold=100% someBranch
Run Code Online (Sandbox Code Playgroud)
您将遇到合并冲突,但不会出现冲突的块。也就是说,您应该得到的唯一冲突/错误是:
CONFLICT (modify/delete): …Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试重命名来自(test.jpeg、test1.jpeg、test2.jpeg 等...)(People-000、People-001、People-002 等...)的目录中的文件
但我还没有在网上的任何地方找到一个好的方法。我对 python 有点陌生,但如果我想通了它会非常有用。
我的文件夹中有几个.txt文件,它们的名称如下:
file1.txt
file2.txt
file2.txt_newfile.txt
file3.txt
file4.txt
file4.txt_newfile.txt
file5.txt_newfile.txt
...
Run Code Online (Sandbox Code Playgroud)
_newfile.txt我正在尝试从文件名中删除。如果该文件存在,它应该被新文件覆盖(例如file2.txt将被替换,但file5.txt只会被重命名)。
预期输出:
file1.txt
file2.txt # this was file2.txt_newfile.txt
file3.txt
file4.txt # file4.txt_newfile.txt
file5.txt #file5.txt_newfile.txt
...
Run Code Online (Sandbox Code Playgroud)
我尝试了以下代码:
for i in $(find . -name "*_newfile.txt" -print); do
mv -f "$file" "${file%????????????}"
done
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
mv: rename to : No such file or directory
Run Code Online (Sandbox Code Playgroud)
我做错了什么以及如何重命名这些文件?
我有几个带有a.dat, a.txt, a.mp3, b.dat, b.txt, b.mp3, b.zip, b.rar,c.mp3等等的文件。我想将所有基本名称为“a”的文件重命名为基本名称“x”。
这样文件就变成x.dat, x.txt, x.mp3, b.dat,b.txt ,b.mp3 ,b.zip ,b.rar ,c.mp3` 等等。
在 Linux 中,这可以通过终端完成,但需要大量输入。我想要一个脚本来为我完成任务。
我正在尝试从不以特定字符串开头的文件中删除行.我们的想法是将所需的行复制到临时文件,删除原始文件并将临时文件重命名为原始文件.
我的问题是我无法重命名文件!
tempFile.renameTo(new File(file))
Run Code Online (Sandbox Code Playgroud)
要么
tempFile.renameTo(inputFile)
Run Code Online (Sandbox Code Playgroud)
不工作.
谁能告诉我出了什么问题?这是代码:
/**
* The intention is to have a method which would delete (or create
* a new file) by deleting lines starting with a particular string. *
*/
package com.dr.sort;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class RemoveLinesFromFile {
public void removeLinesStartsWith(String file, String startsWith, Boolean keepOrigFile) {
String line = null;
BufferedReader rd = null;
PrintWriter wt = null;
File tempFile = …Run Code Online (Sandbox Code Playgroud) 我编写了这个批处理文件,将一些文本附加到一组jpeg文件的文件名中,提供了在当前文件名之前或之后附加它们的选项.
但是由于一些奇怪的原因,当在文件名之前附加时,一个文件被执行两次,结果为new_new_FileName.jpg,而所有其他文件只是new_FileName.jpg.
有趣的是,这个问题并不总是发生,以及在文件名后追加它总是正常工作.
以下是整个代码,之前或之后没有视觉差异,但仍然产生不同的结果.任何人都可以检查这个文件并解释我错在哪里?
感谢帮助.
@ECHO off
title Rename Script
set /A count=1
:Start
cls
set /p STR=choose a string to append:
cls
echo 1. Append before
echo 2. Append after
set /p choice=I choose (1,2):
if %choice%==1 goto renameb
if %choice%==2 goto renamea
:renameB
cls
echo Appending '%STR%' before current file name.
echo.
set /A count=0
FOR %%a in (*.jpg) DO (
ren "%%~a" "%STR%%%~na%%~xa"
echo Was: %%~a Became: %STR%%%~na%%~xa
set /A count+=1
)
goto end
:renameA
cls
echo …Run Code Online (Sandbox Code Playgroud) 我想在C中编写一个可以在MS Win 7环境(NTFS文件系统)下重命名多个文件的程序.因此,这个rename()功能似乎是一个自然的选择.但是,当我在Dev-C++中编写以下内容(但将源文件命名为.c)时:
rename(name1, name2);
Run Code Online (Sandbox Code Playgroud)
编译文件给我错误:
[Error] called object 'rename' is not a function
Run Code Online (Sandbox Code Playgroud)
我已经添加<stdio.h>了标题.有什么我想念的吗?
源代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 50
#define MAX 49
int main()
{
int *p;
int i, rename;
char name1[25], name2[25];
srand(time(NULL));
rename = 0;
p = (int *)malloc(sizeof(int) * N);
for (i = 0; i < N; i++)
p[i] = 0;
for (i = 0; i < MAX; i++) {
if (p[i] == 0) {
printf ("** …Run Code Online (Sandbox Code Playgroud) 是否可以重命名多个共享相似名称但同时属于不同类型文件的文件?
例:
apple.png
苹果.pdf
apple.jpg
我可以用苹果代替其他东西,例如“梨”吗?如果可能的话,命令将是什么?非常感谢您的宝贵时间!
我想使用bash重命名多个文件.
如果文件名包含01我想要附加1在文件名的开头,依此类推.
文件名称:
Old Movie-01.mp4
New Movie-02.mp4
Clip From-before-03.mp4
Clip Old-before-04.mp4
Run Code Online (Sandbox Code Playgroud)
期望的结果:
1 Old Movie-01.mp4
2 New Movie-02.mp4
3 Clip From-before-03.mp4
4 Clip Old-before-04.mp4
Run Code Online (Sandbox Code Playgroud) 我在一个最近经过重组的大型代码库中工作,许多文件不再是我所期望的。
如何查看在两次提交之间移动/重命名的文件列表?我对这些或其他文件的更改不感兴趣,只是以某种方式将旧名称映射到新名称的视图。