0

我目前正在使用这个脚本来移动一些文件并运行一些其他命令:


@echo off
setlocal disableDelayedExpansion

set "src=sourcePath"
set "dst=destinationPath"
set "search=1080p"

for /r "%src%" %%F in (*%search%*) do (
  set "full=%%~fF"
  set "name=%%~nxF"
    setlocal enableDelayedExpansion
    copy "!full!" "%dst%\!name:%search%=!"
    endlocal
)
REM call your batch script here to process the copied files

任何人都可以帮助我将其调整为 bash,以便我可以在 linux 中运行它吗?

4

2 回答 2

1

在不知道所有文件名的确切格式的情况下,它更难,但你可以尝试这样的事情:

#!/bin/bash

files=$(find ./ -type f -name _1080p.*)

for file in ${files[@]} ; do
  new_file=$( echo $file | sed -e 's/_1080p//' )
  cp $file $new_file
  ## add further commands on $new_file here.
done

可以通过在 find 命令中添加正则表达式来改进,并根据需要调整 sed 行以重命名文件。

于 2012-06-19T14:54:23.010 回答
0

所以如果我理解你,

file2=$(echo $file | sed -e "s/[1080p]//g")

cp /sourcepath/$file destinationpath/$file2

应该在你的 for 语句中工作。

于 2012-06-19T14:06:51.363 回答