gpt4 book ai didi

linux - 根据文件名创建目录名

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:28 26 4
gpt4 key购买 nike

在我的脚本中,我正在获取一个文本文件并分成几个部分。在进行任何拆分之前,我将重新格式化文本文件的名称。问题:创建文件夹/目录并将其命名为格式化文件名。这是放置段的地方。但是,当文本文件中包含空格时,脚本会中断。但这就是我尝试先重新格式化名称然后再进行其余操作的原因。我怎样才能按照这个顺序这样做呢?

执行脚本:text_split.sh -s "my File .txt"-c 2

text_split.sh

# remove whitespace and format file name
FILE_PATH="/archive/"
find $FILE_PATH -type f -exec bash -c 'mv "$1" "$(echo "$1" \
| sed -re '\''s/^([^-]*)-\s*([^\.]*)/\L\1\E-\2/'\'' -e '\''s/ /_/g'\'' -e '\''s/_-/-/g'\'')"' - {} \;
sleep 1

# arg1: path to input file / source
# create directory
function fallback_out_file_format() {
__FILE_NAME=`rev <<< "$1" | cut -d"." -f2- | rev`
__FILE_EXT=`rev <<< "$1" | cut -d"." -f1 | rev`
mkdir -p $FILE_PATH${__FILE_NAME};
__OUT_FILE_FORMAT="$FILE_PATH${__FILE_NAME}"/"${__FILE_NAME}-part-%03d.${__FILE_EXT}"
echo $__OUT_FILE_FORMAT
exit 1
}

# Set variables and default values
OUT_FILE_FORMAT=''

# Grab input arguments
while getopts “s:c” OPTION
do
case $OPTION in
s) SOURCE=$(echo "$OPTARG" | sed 's/ /\\ /g' ) ;;
c) CHUNK_LEN="$OPTARG" ;;
?) usage
exit 1
;;
esac
done

if [ -z "$OUT_FILE_FORMAT" ] ; then
OUT_FILE_FORMAT=$(fallback_out_file_format $SOURCE)
fi

最佳答案

您的脚本采用使用 -s 指定的文件名参数,然后通过重命名其包含的文件来修改硬编码目录,然后使用初始文件名生成输出目录和文件名。听起来确实应该调整工作流程。例如,不必尝试纠正/archive/中的所有错误文件名,只需修复用 -s 指定的文件名即可。

要获取文件名和扩展名,请使用 bash 的字符串操作功能,如this question所示:

filename="${fullfile##*/}"
extension="${filename##*.}"
name="${filename%.*}"

关于linux - 根据文件名创建目录名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26228141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com